1
#include<stdio.h>
int main()
{
int i=4, j=8;
printf("%d, %d, %d\n", i|j&j|i, i|j&j|i, i^j);
return 0;
}
輸出是:12,12,12
爲什麼上面的輸出顯示?任何人都可以解釋我?這段代碼做了什麼?
#include<stdio.h>
int main()
{
int i=4, j=8;
printf("%d, %d, %d\n", i|j&j|i, i|j&j|i, i^j);
return 0;
}
輸出是:12,12,12
爲什麼上面的輸出顯示?任何人都可以解釋我?這段代碼做了什麼?
i | j&j | i
是逐位OR i
,i
和j&j
之間(&
超過|
具有優先級)。這相當於i | j
,所以:
i = 0b00000100 = 4
j = 0b00001000 = 8
i|j = 0b00001100 = 12
i^j
這裏是一樣的i | j
因爲是設置爲1無論是在j和我沒有任何單個位。
閱讀http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B特別是運算符優先級部分應該清楚。
您正在使用按位,按位或按位XOR。
認真嗎?你甚至試圖讀你的問題?您將**源代碼**發佈在標題和正文中的問題中?另外:你沒有告訴我們你想要「解決」哪個問題:你提供源和輸出,輸出有什麼問題? – 2011-02-18 09:23:28