本節書摘來自華章計算機《編寫高品質代碼:改善c程式代碼的125個建議》一書中的第2章,建議15-2,作者:馬 偉 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
在c語言中,“||”是邏輯操作符(或),它的操作數是布爾型,即隻有“0”(表示false)和“1”(表示true)兩個數值。c語言規定,在邏輯運算中,所有非0的數值都被看成1處理。
而“|”是位操作符(或),其操作數是位序列。位序列可以是字元型、整型與長短整型等(通常情況下選擇無符号整型)。在位運算中,相應的位之間進行邏輯運算,是以,從邏輯上講,位運算過程包含多個邏輯運算過程。
下面通過代碼清單2-5來了解兩者之間的差別。
在代碼清單2-5中,因為變量x與變量y都不為0,是以執行語句if(x||y) 傳回1。而當執行x|y(即1101|1100)時,相應的位之間逐一地進行邏輯運算(或),是以所得到的結果為1101。代碼清單2-5的執行結果如圖2-5所示。
