c++ - 代码无法选择声明的宏

标签 c++ c macros

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

#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/

相关文章:

c - 提高寄存器机虚拟机上循环的简单自制 JIT 的性能

ios - 宏或字符串常量哪个更好?

macros - Rust 宏可以创建编译时字符串吗?

C++ 可变参数模板异常示例

c - 无法使用c打开文件

c++ - Qt 添加表格小部件项目时出现问题

c - "kernel must be loaded first"

macros - 在 emacs lisp 中定义 let 宏作用域

C++ 将对象 vector 中的元素复制到具有此元素的 vector 中

c++ - 从 boost header 中删除特定于编译器的代码