【发布时间】:2021-03-16 05:47:09
【问题描述】:
我必须分析 C 中的某些代码做了什么,并且我对某行中发生的事情有疑问。代码是
#define PRINTX printf("%d\n", x)
void problem() {
int x = 2, y, z;
x *= 3 + 2; PRINTX;
x *= y = z = 4; PRINTX;
x = y == z; PRINTX;
x == (y = z); PRINTX; // This line is the problem
}
这段代码 sn-p 打印结果数字:
10
40
1
1 // This result **
问题是我仍在试图弄清楚为什么当操作为x == (y = z) 时最后一行打印出x = 1。我很难找出 1 的含义以及操作的优先级。希望可以有人帮帮我! :)
【问题讨论】:
-
请不要写像
#define PRINTX printf("%d\n", x)这样可怕的宏。教你这样做的人不应该在教。
标签: c logical-operators operator-precedence assignment-operator