[英]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.