• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • C語言基礎(06-邏輯運算符和邏輯表達式)

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    C語言基礎(06-邏輯運算符和邏輯表達式): 邏輯運算符把各個運算的變量(或常量)連接起來組成一個邏輯表達式。 邏輯運算符有4個,它們分別是: ?。ㄟ壿嫹牵?、 ||(邏輯或)、&&(邏輯與) ^(異或)。在位運算里面還有 &(位與)、|(位或)的運算。
    C語言基礎(06-邏輯運算符和邏輯表達式):
        邏輯運算符把各個運算的變量(或常量)連接起來組成一個邏輯表達式。
    邏輯運算符有4個,它們分別是:?。。ㄟ壿嫹牵?、?。ㄟ壿嫽颍?、&&(邏輯與)?。蓿ó惢颍?。在位運算里面還有?。Γㄎ慌c)、|(位或)的運算。
      
    什么是邏輯運算--邏輯運算用來判斷一件事情是“對”的還是“錯”的,或者說是“成立”還是“不成立”,判斷的結果是二值的,即沒有“可能是”或者“可能不是”,這個“可能”的用法是一個模糊概念,在計算機里面進行的是二進制運算,邏輯判斷的結果只有二個值,稱這二個值為“邏輯值”,用數的符號表示就是“1”和“0”。其中“1”表示該邏輯運算的結果是“成立”的,如果一個邏輯運算式的結果為“0”,那么這個邏輯運算式表達的內容“不成立“。
    例 1:通常一個教室有二個門,這二個門是并排的。要進教室從門A進可以,從門B進教室也行,用一句話來說是“要進教室去,可以從A門進‘或者’從B門進”
    用邏輯符號來表示這一個過程--能否進教室用符號C表示,教室門分別為A和B。C的值為1表示可以進教室,為0 表示進不了教室。A和B的值為1時表示門是開的,為0表示門是關著的,列表如下:

    說明CAB
    2個教室的門都關著,進不去教室000
    門B是開著的,可以進去101
    門A是開著的,可以進去110
    門A和B都是開著的,可以進去111

    把表中的過程寫成邏輯運算就是: C = A || B  這就是一個邏輯表達式,它是一個“或”運算的邏輯表達式。這個表達式要表達的是這個意思--如果要使得C為1,只要 A“或”B其中之一為 1即可以達到。所以“||”運算稱為“或”運算。
    思考--如果有一個表達式 C = A || B || C 怎樣理解這個邏輯表達式?

    例 2:假設一個房間外面有一個曬臺,那么這個房間就縱向開著二個門,要到曬臺去,必須要過這二個門,很明顯這二個門必須都是開著的才行,否則只要其中一個門關著就去不了曬臺。列表如下:

    說明CAB
    二個門都關著,去不了曬臺000
    門A關著,去不了曬臺001
    門B關著,去不了曬臺010
    門A與門B都開著,可以去曬臺111

    把表中的過程寫成邏輯運算式就是: C = A && B && C ,用一句話來描述這個表達式--如果要使得C為1,必須A‘與’B都為1才行,否則其中任一個為0,C就為0。所以“&&”運算符稱為“與”運算。
    思考--如果有一個表達式 C = A && B && C 怎樣理解這個邏輯表達式?

    例 3:有一個問題如下,有一個晚會,對參加晚會的人有一定的條件限制,教師可以參加,學生當中只有年齡達到16歲以上的男生才能參加,怎樣用上面所講的邏輯運算來表達這樣的邏輯關系?
    設能夠參加晚會為D,教師為A,男生為B,16歲以上為C,可以用下式來描述:
    D = A || ( B && C )   /*這個表達式可以理解嗎,可以參照上面表格用0、1來寫一下*/

    例 4:下面是一個程序,用到了if判斷語句(if是如果的意思)
    #include<stdio.h>
    void main()
    {
        int a=0,b=0,c=0;
        scanf("%d%d%d",&a,&b,&c);     /*從鍵盤輸入參加者的條件*/
        if((a||(b&&c))               /*如果是教師或者是16歲以上的男生*/
            printf("你可以參加這個晚會。");   /*輸出可以參加的信息*/
        else                                  /*否則*/
            printf("你不能參加這個晚會。");   /*輸出不能參加的信息*/
    }

    邏輯量和邏輯值
    在邏輯表達式里有參加邏輯運算的邏輯量及邏輯運算最后的結果(邏輯值),把這二個概念區分開來和記住它們是很重要的。
    什么是邏輯量--凡是參加邏輯運算的變量、常量都是邏輯量。
    我們來仔細分析一下哪些是邏輯量,哪些是邏輯值。
    要表達一件事情是否成立是這樣描述的:“如果他來了,這件事情一定能成功”。用程序語句描述就是 if(a!=0)在這個語句里用變量a來表示他來與不來這件事,變量的值為1說明他來了,為0就是不來。在C語言中,一般不寫成這樣(如果一定要寫成if(a!=0),別人一看你的程序就知道你是編程菜鳥),而是寫成 if(a)。括號里面的變量a就是邏輯量。當該邏輯量的邏輯值為1時,if表達式為真,這時可以執行if 后的的程序語句。當該邏輯量的邏輯值為0時,if表達式為假,就不能執行if后面的程序語句??梢钥闯?,if表達式能否成立是要看“邏輯量”最后的“邏值值”是否為1來判斷的。
    什么是邏輯值--邏輯量、邏輯表達式其最后的運算結果的值就是邏輯值。邏輯值只能是“0”和“1”這二個數?!?”表示邏輯真(成立);“0”表示邏輯假(不成立)。
    一切非“0”的邏輯量其邏輯值都為真。正確理解這句話很重要。例:if(-1),這一句可以這樣來分析--首先“-1”是一個非“0”的邏輯量,它的邏輯值為“1”,那么這個if語句就成為 if(1),這個if表達式成立。

    思考:下面的式子中,哪個語句不被執行
     int a=0,b=10; if(a) {b++;a++}  a+=10; if(b) {a=10;b=-10;} if(b)a=0;

    C語言中進行邏輯運算時要注意的問題:
    例1:
    現在要判斷一個變量的值是否在12到30之間,很自然想到了這樣一個表達式:
    scanf("%d",&a);
    if(12<a<30)     /*這樣的寫法對嗎*/
        printf("%d".a);    
    把這樣的語句放在程序里編譯一下,沒有什么不正常的,編譯通過。
    但是在運行的時候就會出問題。下面仔細分析一下if語句的運行過程:
    表達式12<a<30中首先進行12<a的判斷,如果a>12則為真,否則為假。設a的值為14,些時表達式結果為邏輯真,那么整個表達式if(12<a<30)成為if(1<30)(注意這個新的表達式中的1是12<a的邏輯值),這時問題就出現了,可以看到當變量a的值大于12的時候總有1<30,所以后面的<30這個關系表達式是多余的了。另外假設a的值小于12也會出現這樣的情況。由些看來這樣寫法肯定是錯的。
    正確的寫法應該是:
    if((12<a)&&(a<30))  /*如果變量a的值大于12并且小于30*/
    這樣不但編譯通過,運行結果也是對的了。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>