-7
#include <iostream>
#define func(x) x*x-x
using namespace std;
int i=2;
int main(void) {
cout << "func(i+3) is " << func(i+3) << endl;
}
此打印12張?它不應該打印20嗎?C++如何打印12?
#include <iostream>
#define func(x) x*x-x
using namespace std;
int i=2;
int main(void) {
cout << "func(i+3) is " << func(i+3) << endl;
}
此打印12張?它不應該打印20嗎?C++如何打印12?
宏替換隻是文字替換。所以字符串「x」在字符串「x * x-x」中被替換爲字符串「i + 3」。所以:
「×* XX」 - > 「i + 3中* I + 3-I + 3」
這然後被編譯成代碼:
我+ 3 * i + 3中-i的3
其評估:
我+ 3 * i + 3中,i + 3中 - > 2 + 3 * 2 + 3-2 + 3 - > 2 + 6 + 3-2 + 3 - > 12
在您的頭部手動進行更換。來吧,做吧。 –
這就是爲什麼宏是邪惡的,應該避免,直到你知道你需要一個。 – NathanOliver
那麼,我需要學習什麼來學習這個?任何話題? –