簡體   English   中英

如果按位或運算符在兩個數字之間使用兩次。 這將如何運作?

[英]If bitwise OR operator is used twice between two number. How will that work?

#include <stdio.h>
int main()
{
    int a = 60; // 0011 1100
    int b = 13; // 0000 1101
    int c = 0;
    c = a || b;
    printf("%d",c);
    return 0;
}

我的代碼的 output 是 1。誰能解釋它是如何工作的?

在這份聲明中

 c = a || b; // 0011 1101

使用了邏輯 OR 運算符|| 如果任一操作數不等於 0,則產生 1。

來自 C 標准(6.5.14 邏輯或運算符)

3 || 如果任一操作數比較不等於 0,則運算符應產生 1; 否則,它產生 0。結果具有 int 類型。

按位包含 OR 運算符| 寫得像

 c = a | b; // 0011 1101

如果你會這樣寫

 c = a | | b;

符號'|'之間有空格那么編譯器將發出錯誤。 您不能使用這種方式任何二元運算符,因為這樣的運算符需要運算符左側和右側的操作數。

當然,如果你會寫例如

c = a + + b;

那么第一個運算符+是二元加號,第二個運算符+是一元加號運算符。 也就是說,沒有兩個連續的二元運算符+

你不應該混合邏輯運算符|| &&與位運算符| &

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM