/*
什么是逻辑运算符的短路问题:
&& 口诀:一假为假
A && B
如果 A为假(0) 结果为假 ,B就不执行了,这就是 逻辑与短路
|| 口诀:一真为真
A || B
如果 A为真(1) 结果为真,B就不执行了,这就是逻辑或的短路
*/
#include <stdio.h>
int main(int argc, const char * argv[]) {
int x,y,z,result=-1;
int a=3,b=4;
x = y = z =0;
// ++x || (++y && z++) x = 1,y=1,z=1;
// 1 || 1 && 1
//实际: 逻辑或短路了
//result = (++x) || ((++y) && (z++));
// result ? x,y,z
//实际: 逻辑与短路了
result = x && y++; //result 0 x = 0 y=0
//result = a<2 && b==4 || a<5; //0
printf("result = %d\n",result);
printf("x = %d,y = %d,z = %d\n",x,y,z);
return 0;
}
|
|