一 逻辑运算符:
&&:逻辑与,读作并且
表达式左右两边都为真,那么结果才为真
口诀:一假则假
||:逻辑或,读作或者
表达式左右两边,有一个为真,那么结果就为真
口诀:一真则真
!: 逻辑非,读作取反
表达式的结果如果为假,就变成真,如果为真,就变成假
口诀:真变假,假变真
二 逻辑运算符的短路问题
tips:非0为真,0为假
短路的情况:
&&:左边如果为假,则右边短路(右边不会被执行)
||:左边如果为真,则右边短路(右边不会执行)
tips:代码例子如下
#include <stdio.h>
int main(int argc, const char * argv[]) {
// int res = 1 && 2;
// printf("res=%d\n",res);
// int res = 1 && -2;
// printf("res=%d\n",res);//1
// int res = 1 && 0;
// printf("res=%d\n",res);//0
// int num1=10,num2=20;
//或者的口诀:一真则真,所以如果左边为真,那么右边表达式不会被执行了
// int res = num1++ || num2++;
// printf("res=%d num1=%d num2=%d\n",res,num1,num2);//1 11 20
// int num1=0,num2=10;
// //并且的口诀:一假则假
// int res = num1++ && num2++;
// printf("res=%d num1=%d num2=%d\n",res,num1,num2); //0 1 10
// int num1=0,num2=10;
// int sum = num1++ + num2; //10
// int num = 10;
// int res = 0 && num++;
// printf("res=%d num=%d\n",res,num); //0 10
// int num1=0,num2=10;
// //并且的口诀:一假则假
// int res = num1 && num2++;
// printf("res=%d num1=%d num2=%d\n",res,num1,num2); //1 1 11
// int num1=-3,num2=3,num3=4;
// int res = (num1 + num2) && (num1 - num3);
// printf("res=%d\n",res);//0
// int num1=-3,num2=3,num3=4;
// int res = (num1 + num2) && num3++;
// printf("res=%d num3=%d\n",res,num3);//0 4
int num1=-3,num2=3,num3=4;
int res = num1++ + num2++ && num3++;
printf("res=%d num1=%d num2=%d num3=%d\n",res,num1,num2,num3);//0 -2 4 4
return 0;
}