2015-09-05 42 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) 
相關問題