我需要帮助理解下面代码中两个的替换
I need help understanding the replacement of TWO in the below code
我 运行 通过 Code::Blocks 它显示了最终答案 1。然后如何在“ i = i-2*TWO” 语句中替换 TWO,为什么会这样?
该代码是我正在尝试的家庭作业的一部分 solve/understand:
#include <stdio.h>
#define ONE 1
#define TWO ONE + ONE
int main(void) {
int i = 2;
i = i - 2 * TWO;
printf("%d\n", i);
return 0;
}
自己替换就好了。
i = i - 2 * TWO;
是
i = i - 2 * ONE + ONE;
所以你有
i = 2 - 2 * 1 + 1;
所以我的值为 1。
如果你想得到等于-2的结果,那么重写宏
#define TWO ( ONE + ONE )
您可以通过 运行 gcc -E <filename.c>
查看编译器将什么视为最终表达式。这应该有助于理解为什么结果是 1.
我 运行 通过 Code::Blocks 它显示了最终答案 1。然后如何在“ i = i-2*TWO” 语句中替换 TWO,为什么会这样?
该代码是我正在尝试的家庭作业的一部分 solve/understand:
#include <stdio.h>
#define ONE 1
#define TWO ONE + ONE
int main(void) {
int i = 2;
i = i - 2 * TWO;
printf("%d\n", i);
return 0;
}
自己替换就好了。
i = i - 2 * TWO;
是
i = i - 2 * ONE + ONE;
所以你有
i = 2 - 2 * 1 + 1;
所以我的值为 1。
如果你想得到等于-2的结果,那么重写宏
#define TWO ( ONE + ONE )
您可以通过 运行 gcc -E <filename.c>
查看编译器将什么视为最终表达式。这应该有助于理解为什么结果是 1.