最终结果是:
x的值为0, y的值为1,
z的值为1。
.
而不是0、2、2。
.
因为在语句"--x&&++y&&++z;"中使用的是逻辑与"&&"。对于逻辑与而言,一旦结果确定后就不再计算后面的值,在这里就是 "--x" 已经能够计算出表达式 "--x&&++y&&++z"的值为 0 ,所以,"--x&&" 后的 "++y&&++z"不会再被计算,也因此 x 和 y 的值根本不会有机会发生变化。所以,最终结果是(x, y, z) = (0, 1, 1)。但如果把 "&&" 改为 "&",比如 "--x&++y&++z;",则结果将是(0, 2, 2)。
.
#include <stdio.h>
#include <stdlib.h>
.
int main(void)
{
int x, y, z;
.
x = y = z = 1;
--x&++y&++z;
printf("%d, %d, %d\n", x, y, z);
.
return 0;
}
输出:
0, 1, 1