在下面的代码中,输出值不是宏定义的,是因为这些值必须在预处理器阶段之前可用吗?
#define INT_MAX 100
#include <iostream>
using namespace std;
int main()
{
int x = INT_MAX;
x++;
cout<<x<<INT_MAX;
}
Run Code Online (Sandbox Code Playgroud)
结果是-2147483648
有一个名为的INT_MAX定义的宏limits.h.我假设iostream包含limits.h并覆盖了您自己的定义INT_MAX.这会导致整数溢出,x++因为它INT_MAX是可以用整数表示的最大值.