2015-09-05 44 views
0
#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没有得到我预期的

+0

欢迎SO!请指定您获得的输出,而不是预期的输出。 – nhee

+1

非常好的示例为什么不应该使用宏,尤其是在不使用括号时。 –

+1

[C中宏需要括号](http://stackoverflow.com/q/10820340/995714) –

回答

7

p将由5+3代替。所以行int i=p*p;int i=5+3*5+3;*的排名高于+,因此结果为23

您需要paranthese你的定义:

#define p (5+3) 
+0

谢谢了:) –

4
int i=p*p; 

p*p被替换为5+3*5+3,从而使23 (5+15+3=23)。正如你知道*+前进行评估。

定义宏如下 -

#define p (5+3) 
相关问题