<分区>
大家好,我对这段代码有疑问
#include<iostream>
#define SQR(x)(x*x)
int main() {
int a, b=3;
a = SQR(b+1);
std::cout << a;
}
结果是 7 而不是 16。我无法理解。
标签 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/