#include <iostream>
using namespace std;
# define p 5+3
int main() {
//code
int i=p*p;
cout<<i;
return 0;
}
预期输出的输出:64 实际输出:23 howwW? 我不明白#定义一个B + C confusion..I没有得到我预期的
#include <iostream>
using namespace std;
# define p 5+3
int main() {
//code
int i=p*p;
cout<<i;
return 0;
}
预期输出的输出:64 实际输出:23 howwW? 我不明白#定义一个B + C confusion..I没有得到我预期的
p
将由5+3
代替。所以行int i=p*p;
是int i=5+3*5+3;
。 *
的排名高于+
,因此结果为23
。
您需要paranthese你的定义:
#define p (5+3)
谢谢了:) –
int i=p*p;
p*p
被替换为5+3*5+3
,从而使23 (5+15+3=23)
。正如你知道*
将+
前进行评估。
定义宏如下 -
#define p (5+3)
欢迎SO!请指定您获得的输出,而不是预期的输出。 – nhee
非常好的示例为什么不应该使用宏,尤其是在不使用括号时。 –
[C中宏需要括号](http://stackoverflow.com/q/10820340/995714) –