我有以下代码.
#include <stdio.h>
#define d 10+10
int main()
{
printf("%d",d*d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当10 + 10 = 20时,我认为d在程序中到处都是20.但是当我执行d*d时,我预计结果为d*d = 20*20 = 400.但结果打印为120.任何人都可以给我这个行为的解释吗?
Tom*_*ski 10
预处理器只是做简单的"查找和替换",所以这段代码:
printf("%d",d*d);
Run Code Online (Sandbox Code Playgroud)
改变为
printf("%d",10+10*10+10);
Run Code Online (Sandbox Code Playgroud)
这是10 + 100 + 10 = 120
这就是为什么在定义中添加parens非常重要的原因:
#define d (10+10)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |