#define ABC 20
#define XYZ 10
#define XXX ABC - XYZ
main()
{
int a;
a = XXX * 10;
printf("%d\n", a);
}
我检查了 XXX 的值为 10。那为什么输出是 -80?这可能很愚蠢,但我是 c 编程的新手。
最佳答案
在你的代码中
a = XXX * 10;
与
相同a = ABC - XYZ * 10;
这是
a = 20 - 10 * 10;
答案是20 -100
, -80
。
这就是为什么通常建议在 MACRO 定义中使用括号。有点像
#define XXX (ABC - XYZ)
是您所期望的。
也就是说,托管环境中 main()
的一致性签名至少是 int main(void)
。
关于c - 为什么下面的程序输出 -80?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40890499/