c++ - C++中的宏处理器

标签 c++

<分区>

大家好,我对这段代码有疑问

#include<iostream>
#define SQR(x)(x*x) 

int main() {
    int a, b=3;
    a = SQR(b+1);

    std::cout << a;
}

结果是 7 而不是 16。我无法理解。

最佳答案

宏扩展为文字

(b + 1 * b + 1)

所以你的结果是:

3 + (1 * 3) + 1.

将您的宏更改为:

#define SQR(x)((x)*(x))

它应该可以工作。

关于c++ - C++中的宏处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25873951/

相关文章:

c++ - 小组项目剧院座位切换说明

c++ - g++ 忽略被覆盖的虚函数

c++ - 如何删除最后一个逗号?

c++ - 可以组合部分模板特化来生成隐式生成的共享代码路径吗?

c++ - 将机器的IP地址发送到服务器

C++ 错误可变大小对象可能未初始化

C++,类构造函数中参数名称后的&符号

c++ - valgrind Conditional jump or move depends on uninitialised value(s) ,这是否表示内存泄漏?

c++ - 将字符串转换为十六进制数组数据

c++ - 触发异常时应该如何记录?