歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

關於C++中的#define

#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與運算符優先級沒有關系的吧,起碼我覺得不應該是這個說法...

Copyright © Linux教程網 All Rights Reserved