为什么当2行写成1行时程序变错?

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:11:51
这是道关于条件编译的题目,
我是为了节约地方,就把2行写成了1行,然后程序马上完全错误.请问下这是因为什么?
式样1:
#else
cout<<"输出总和:"<<a+b+c;
式样2:
#else cout<<"输出总和:"<<a+b+c;
一看真的没什么,一字不差
比如if...else...他们这样接上都没关系.但式样2是错误的.不知道是因为什么?

完整的例子如下:
#include<iostream>
using namespace std;
#define A
int main()
{int a=1,b=2,c=3;
#ifndef A
cout<<"输出这三个数:"<<a<<b<<c;
#else
cout<<"输出总和:"<<a+b+c;
#endif
return 0;}

#else是预编译指令,不是C代码,如果写成了一行,跟在后面的代码都会被当作预编代码了,所以是不可以写在一行的.

无语 宏定义你写成一行算什么 他怎么知道你说什么```

宏定义跟你的if else不是一个概念```

你还不如

#include<iostream>
using namespace std;
int p = 1;
int main()
{int a=1,b=2,c=3;
if(p == 1)
{
cout<<"输出这三个数:"<<a<<b<<c;
}
else
{
cout<<"输出总和:"<<a+b+c;
}
return 0;
}

...有意思。。

呵呵,是挺有意思