This question already has answers here:
C : #define usage [duplicate]
(3个答案)
4年前关闭。
这段代码的输出是225。我无法理解这里发生的实际情况。
如果我使用
但是在前一种情况下,我不清楚真正发生了什么。为什么答案是225?
替换后将变为:
现在此表达式的计算结果为225(基本数学:先除以-> 15 * 15,然后乘以-> 225)
使用括号解决您的问题(然后变成225 /(15 * 15))。
:)
(3个答案)
4年前关闭。
#include <stdio.h>
#define SQR(x) x*x
int main()
{
printf("%d",225/SQR(15));
return 0;
}
这段代码的输出是225。我无法理解这里发生的实际情况。
如果我使用
#define SQR(x) (x*x)
,那么它可以正常工作,因为如果我们有一些运算符的表达式,我们应该使用括号。但是在前一种情况下,我不清楚真正发生了什么。为什么答案是225?
最佳答案
宏仅进行替换(在编译代码之前完成)。
因此,以下行
printf("%d",225/SQR(15));
替换后将变为:
printf("%d",225/15*15);
现在此表达式的计算结果为225(基本数学:先除以-> 15 * 15,然后乘以-> 225)
使用括号解决您的问题(然后变成225 /(15 * 15))。
:)
关于c - C中的#define指令给出模棱两可的答案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33187513/
10-11 16:18