新手问:逻辑运算短路问题,前辈们指点!
#include <stdio.h>void main()
{
int x,y,z;
x=y=z=1;
++x||++y&&++z;
printf("x=%d,y=%d,z=%");
}
输出结果是:x=2,y=1,z=1
我在书上看的:a&&b<c,如果a的值为0,系统便确定表达式的运算结果总是0,忽略表达式b<c的值,如果a的值为1,这时要计算b<c的值
a||b<c,如果a的值为1,系统便确定表达式的运算结果总是1,忽略表达式b<c的值,如果a的职位0,这是要计算b<c的值
那么以上表达式中:++x||++y&&++z
++x的值是2,表达式可看作是1&&++z,也就是说现在a的值为真值,要计算后便++z的值阿,输出结果应为x=2,y=1,z=2吧?