#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) –