日期: 2016年6月13日
环境: Xcode 7.3.1
描述:
int num_1 = -1;
int num_2 = -1;
//我们期望num_1得到的值是0,却得得到1
num_1 = (1 || 0) && 0;
//我们期望num_2得到的值是1,却得得到0
num_2 = (0 && 1) || 1;
if(!num_1){
printf("num_1=0\n");
}
if(num_2){
printf("num_2=1\n");
}
逻辑与:一真为真,即为真
当逻辑与操作多个表达式时,第一个操作数为真时,整个表达式都为真,编译器将不再执行操作符之后的语句;
以上代码中,编译器永远不执行:
if(!num_1){
printf("num_1=0\n");
}
因为第一个操作数为真,编译器直接跳过逻辑或操作符之后的语句。逻辑或:一假为假,即为假
当逻辑或操作多个表达式时,第一个操作数为假时,整个表达式都为假,编译器将不再执行操作符之后的语句;
以上代码中,编译器永远不执行:
if(num_2){
printf("num_2=1\n");
}
因为第一个操作数为假,编译器直接跳过逻辑与操作符之后的语句。