C Primer Plus 第7章 C控制語句:分支和跳轉 7.3得到邏輯性

假設須要編寫一個程序,用來計算在一個輸入的句子中,除單引號和雙引號之外的字符出現了多少次。能夠用邏輯運算符來實現該目的,能夠用英文的句號來標識一個句子的結束。測試

程序清單  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。

相關文章
相關標籤/搜索