在下面的代码中,输出值与宏中定义的不同,是因为这些值必须在预处理器阶段之前可用吗?
#define INT_MAX 100
#include <iostream>
using namespace std;
int main()
{
int x = INT_MAX;
x++;
cout<<x<<INT_MAX;
}
结果是-2147483648
最佳答案
在 limits.h
中定义了一个名为 INT_MAX
的宏。我假设 iostream 包含 limits.h 并覆盖您自己的 INT_MAX 定义。
这会导致 x++
处出现整数溢出,因为 INT_MAX
是整数可以表示的最大值。
关于c++ - 代码无法选择声明的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680915/