#include <iostream>
using namespace std;
#define ADD(x, y) x+y//試卷上是減號,本人覺得是加號
int main()
{
int m = 3;
int n = 4;
m += m * ADD(n, m);
cout << m << endl;
return 0;
}
請看上面的代碼,你覺得m最後會輸出?呢。
其實在C++裡,#define宏定義
#define ADD(x, y) x+y
這種方式最後在編譯的時,僅僅做的是代碼替換,這就像是語句
m += m * ADD(n, m);
其實就會被編譯為:
m += m *n+m;
之後計算m*n=12,然後+m=15,然後m+=15(也就是m=m+15)
所以最後結果為18........
【PS: 】貌似跟#define與運算符優先級沒有關系的吧,起碼我覺得不應該是這個說法...