以下是代码:
int main()
{
int x = 2, y = 0;
int z = (y++) ? y == 1 && x : 0; /* Need help here */
printf("%d\n", z);
return 0;
}
在第4行需要帮助。为什么输出0,需要帮助plzzzzzzzz
答案 0 :(得分:3)
解决这些问题的最佳方法是了解运算符优先级。首先展开最低优先级运算符,在本例中为赋值运算符和三元运算符:
int main()
{
int x = 2, y = 0;
int z;
if (y++) {
z = y == 1 && x;
} else {
z = 0;
}
printf("%d\n", z);
return 0;
}
答案在这里已经很明显 - y++
首先评估y
(0
)的值,然后递增它,因此条件评估为{{1} } 0
分支,else
值为z
。
答案 1 :(得分:2)
y ++是后增量 试试++ y