一 邏輯運算符:
&&:邏輯與,讀作並且
表達式左右兩邊都為真,那么結果才為真
口訣:一假則假
||:邏輯或,讀作或者
表達式左右兩邊,有一個為真,那么結果就為真
口訣:一真則真
!: 邏輯非,讀作取反
表達式的結果如果為假,就變成真,如果為真,就變成假
口訣:真變假,假變真
二 邏輯運算符的短路問題
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;
}