C語言中文網 目錄

|和||的區別,C語言|和||的區別詳解

在 C 語言中,“||”是邏輯操作符(或),它的操作數是布爾型,即只有“0”(表示 false)和“1”(表示 true)兩個數值。C 語言規定,在邏輯運算中,所有非 0 的數值都被看成 1 處理。

而“|”是位操作符(或),其操作數是位序列。位序列可以是字符型、整型與長短整型等(通常情況下選擇無符號整型)。在位運算中,相應的位之間進行邏輯運算,因此,從邏輯上講,位運算過程包含多個邏輯運算過程。

下面通過一個示例來了解兩者之間的區別。
#include <stdio.h>
int main (void)
{
    unsigned int x = 0x1101;
    unsigned int y = 0x1100;
    /*邏輯操作*/
    printf("sizeof(x || y): %d\n", sizeof(x || y));
    if(x||y)
    {
        printf("x || y : %d(True) \n", x||y);
    }
    else
    {
        printf("x || y : %d(False) \n", x||y);
    }
    /*位操作*/
    printf("sizeof(x | y): %d\n", sizeof(x | y));
    printf("x | y : %x \n", x|y);
    return 0;
}
因為變量 x 與變量 y 都不為 0,所以執行語句 if(x||y) 返回 1。而當執行 x|y(即 1101|1100)時,相應的位之間逐一地進行邏輯運算(或),因此所得到的結果為 1101。

程序運行結果為:
sizeof(x || y): 4
x || y : 1(True)
sizeof(x | y): 4
x | y : 1101

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo