歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 關於C++中的#define

關於C++中的#define

日期:2017/3/1 9:53:24   编辑:Linux編程

#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