gpt4 book ai didi

c - 当 +/- 符号放入宏中时的预处理器指令规则

转载 作者:行者123 更新时间:2023-11-30 16:30:42 24 4
gpt4 key购买 nike

考虑以下代码片段。

#include<stdio.h>
#define A -B
#define B -C
#define C 5

int main()
{
printf("The value of A is %dn", A);
return 0;
}

现在,预处理器首先将代码中的所有 A 替换为“-B”。然后它用“-C”替换代码中的所有 B。因此,实际上原来的 A 现在将是“--C”。
最后所有的 C 都被替换为 5。所以 A 现在将是 --5。根据这个逻辑,程序不应该编译。

但是程序的输出是:

The value of A is 5

请解释一下。

最佳答案

完成宏替换后,它会创建单独的标记,除非您使用标记粘贴运算符#。所以所有宏展开后的结果是

printf("The value of A is %dn", - - 5);

虽然--5无效,但- - 5可以。它对 5 求反两次,并且否定相互抵消,得到 5

关于c - 当 +/- 符号放入宏中时的预处理器指令规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50979357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com