代码是:
int i = 3, j = 4, k = 5;
printf("%d\n", i < j || ++j < k);
printf("%d %d %d\n", i, j, k);
输出结果为:
1
3 4 5
我想问的是++不是优先执行吗?这样打印j的值不应该是5吗?怎么是4。谢谢
如果按照逻辑或去先执行也不对啊,那样或左边的值为真(1),接下来就应该计算右边的值,这样结果j的值还是应该为5啊。除非或左边的值为假(0),才不会去计算右边的值,这样结果j的值确实为4,可是那样的话第一个输出的结果不就应该为假(0)。
int i = 3, j = 4, k = 5;
printf("%d\n", i < j || ++j < k);
printf("%d %d %d\n", i, j, k);
输出结果为:
1
3 4 5
我想问的是++不是优先执行吗?这样打印j的值不应该是5吗?怎么是4。谢谢
如果按照逻辑或去先执行也不对啊,那样或左边的值为真(1),接下来就应该计算右边的值,这样结果j的值还是应该为5啊。除非或左边的值为假(0),才不会去计算右边的值,这样结果j的值确实为4,可是那样的话第一个输出的结果不就应该为假(0)。