- int x, y, z, result;
- x = y = z = 0;
- result = ++x ||(++y&&z++);
- printf("x=%d,y=%d,z=%d,result=%d\n",x,y,z,result);
- return 0;
复制代码 输出结果并非是1,1,1,1.而是1,0,0,1
是因为逻辑或短路了,
A&&B,若A为假,结果为假,B就不执行了,这就是逻辑与短路。
A||B,若A为真,结果为真,B就不执行了,这就是逻辑或短路。
本题中发生的就是逻辑或短路了,因此y,z都没有尽兴计算。
|
|