#include<iostream>
using namespace std;
#define P d2 + 2
int main()
{
int d2 = 4;
cout << P * 2;
getchar();
return 0;
}
为什么这段代码会返回8而不是12? 当我输出P时,它有6个值。
答案 0 :(得分:3)
在编译器之前运行的C(和C ++)预处理器在使用指令#include
和#define
时进行严格替换。换句话说,在预处理器运行之后,所有编译器都会看到
cout << d2 + 2 * 2;
你应该试试
#define P (d2 + 2)
甚至更好地完全避免使用宏。
答案 1 :(得分:1)
你忘了牙箍。宏直接替换为代码。所以你的陈述是:
cout << d2 + 2 * 2
哪个是d2 + 4
。
将宏编辑为
#define P (d2 + 2)