代码无法选择声明的宏

use*_*825 -2 c c++ macros

在下面的代码中,输出值不是宏定义的,是因为这些值必须在预处理器阶段之前可用吗?

#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

Fra*_*fer 9

有一个名为的INT_MAX定义的宏limits.h.我假设iostream包含limits.h并覆盖了您自己的定义INT_MAX.这会导致整数溢出,x++因为它INT_MAX是可以用整数表示的最大值.