c - 为什么下面的程序输出 -80?

标签 c c-preprocessor

    #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/

相关文章:

c - Eclipse CDT 中的预处理器宏文件是什么?

gcc - 自定义 gcc 预处理器

C libcurl 获取输出成字符串

c - 如何使用 C 中的函数动态初始化数组

python - SWIG 或 Boost - 用于将 C 结构映射到 Python

使用 openssl 中间证书连接到 AWS MQTT 代理

C++ 模板预处理器工具

c - C 宏上的 ACSL 注释

c++ - 一元减号的宏扩展

c - Julia:调用 GSL 函数