當在一個表達式中使用多個運算符,有可能你所寫的表達式結果和你所期望的結果不一樣,那麼這個時候多半就是把運算符之間的優先級沒有搞清楚,在不清楚優先級的情況下,最簡單的做法就是在表達式之間加上圓括號。
邏輯與“&&” 邏輯或 “||” 邏輯非 “!”運算如下圖:
邏輯運算符的優先級:!> && > ||
<table><tbody>a
b
!a
!b
a&&b
a||b
真
真
假
假
真
真
真
假
假
真
假
真
假
真
真
假
假
真
假
假
真
真
假
假
邏輯表達式採用“短路求值”的方法
a||b 的值,只有a的值為假時才判斷b的值;如果a的值為真,b就不用判斷了。
int a = 1 , b = 0;
if( a || ++b)
printf("a = %d, b = %d\\n", a ,b);
結果:a = 1, b = 0;
a&&b 的值,只有當a的值為真才判斷b的值;如果a的值為假,就不用判斷b的值。
int a = 0, b = 1;
a && ++b;
printf("a = %d, b = %d\\n", a, b);
結果:a = 0, b = 1
閱讀更多 C小白 的文章