假設須要編寫一個程序,用來計算在一個輸入的句子中,除單引號和雙引號之外的字符出現了多少次。能夠用邏輯運算符來實現該目的,能夠用英文的句號來標識一個句子的結束。測試
程序清單 7.6 chcount.cspa
#include #define PERIOD '.' int main (void) { int ch; int charcount=0; while((ch=getchar())!=PERIOD) { if(ch!='"' && ch!='\'') //若是字符不是雙引號而且它不是單引號 charcount++; } printf("There are %d non-quote characters.\n",charcount); return 0; }
邏輯運算符的優先級低於關係運算符,因此沒必要使用圓括號組合表達式。code
C的邏輯運算符ci
運算符 | 含義 |
&& | 與 |
|| | 或 |
! | 非 |
假設A和B是兩個簡單的關係表達式,那麼能夠聲明以下:get
*僅當A和B都爲真時,A&&B才爲真。數學
*若是A爲真或B爲真或兩者都爲真,A||B爲真。table
*若是A爲真,!A爲假;若是A爲假,!A爲真。class
7.3.1 改變拼寫法:iso646.hobject
C99標準爲邏輯運算符增長了可供選擇的拼寫法。它們在iso646.h頭文件中定義。程序
表7.4 邏輯運算符的可選表示法
傳統的 | iso646.h |
&& | and |
|| | or |
! | not |
7.3.2 優先級
!運算符擁有最高的優先級,它高於乘法運算,和增量運算符的優先級相同,僅次於圓括號。&&運算符的優先級高於||,這兩者的優先級都低於關係運算符而高於賦值運算符。
7.3.3 求值的順序
C保證邏輯運算符是從左到右求值的。&&和||運算符是序列的分界點,所以在程序從一個操做數前進到下一個操做數以前,全部的反作用都會生效。並且,C保證一旦發現某個元素使表達式整體無效,求值將馬上中止。
7.3.4 範圍
能夠把&&運算符用於測試範圍。例如:range>=90 && range<=100,千萬不要像數學上這樣寫90<=range<=100。