2014-06-14 60 views
-5

我對這些邏輯運算符感到困惑。有人可以解釋這些運營商的優先級和聯合規則嗎?在位操作中,a = 011,b = 010和c = 001 d是否a應該首先否定,還是評估應該從右到左開始,優先級高? 的輸出是4,3,3。|,〜和&運算符的運算符優先級?

#include<stdio.h> 
int main() 
{ 
int a=3,b=2,c=1,d,e,f; 
d=~a|b&c; 
printf("d=%d\n",d); 
e=a|b&~c; 
printf("d=%d\n",e); 
f=a|b&c; 
printf("d=%d\n",f); 
return 0; 
} 
+10

有趣的是,來自Google的熱門答案之一會爲您提供http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B –

+1

http://en.cppreference.com/w/cpp/language/operator_precedence –

+1

對熱心和專業程序員的研究預計最少...... – Deduplicator

回答

2

一元運算符(例如,~)的優先級高於二元運算符。

&運營商優先級高於|運營商。

請參閱man 7 operators瞭解運算符優先級的摘要。