ran*_*pos 2 c macros c-preprocessor
我在C语言中遇到了麻烦.我尝试阅读一些材料,但它已经过了我的脑海.
例如:
#include <stdio.h>
#define A(x) ((x)?-1:0)
int main()
{
int i = 2;
int i2 = A(i)*i;
printf("%d", i2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有人可以评论该代码,所以我知道发生了什么?或者,如果您有与注释代码类似的练习的链接,我可以从中学习,这将是伟大的.
扩展宏后,该i2行将如下所示:
int i2 = ((i) ? -1 : 0) * i;
Run Code Online (Sandbox Code Playgroud)
我认为双等于是一个错字.
并且由于该值i 是2,上述将采取三元表达式的第一部分,并评估-1 * 2这当然是-2.
一个想法是通过预处理器运行代码,并查看结果.有gcc,相关的命令行选项是-E.