level 1
代码是:
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)。
2016年09月17日 14点09分
1
level 11
逻辑与和逻辑或表达式为断点表达式,根据真"或"任意表达式为真,假"与"任意表达式为假,所以逻辑或判断其前表达式为真即止,而逻辑与判断其前表达式为假即止。
2016年09月17日 15点09分
2
原来这样啊,谢谢
2016年09月18日 08点09分