2017-06-06 187 views
0
// How does this program work with ternary operator 
#include <stdio.h> 
int main() 
{ 
    int x = 2, y = 5; 
    (x & y) ? printf("True ") : printf("False "); // How do we get output 
    (x && y) ? printf("True ") : printf("False "); 
    return 0; 
} 

此程序如何工作? 邏輯運算符和位運算符如何工作?不應使用按位運算符來代替邏輯運算符

+0

輸出:False和True –

+0

相關,[條件語句使用按位運算符](https://stackoverflow.com/q/10034470/608639)和[條件語句如何使用按位運算符?](https: //stackoverflow.com/q/13054401/608639) – jww

+0

@manjunathhiremath是你的問題解決? –

回答

3

在這個程序&是位運算符將做2和5

0000 0010<=2 
0000 0101<=5 
0000 0000<=output 

逐位and操作,從而在第一線將打印False, 而第二個是正常and操作者爲其中兩個值是真的(非零數字),因此2 && 5將導致正確,輸出將爲True

+0

@ Vishwajeet Vishu懷疑已被清除。謝謝 –

+0

@manjunathhiremath歡迎您接受我的回答 –

0

按位AND運算符是單個&符號:&。一個方便的助記符是布爾AND的小版本在較小的部分(位,而不是字節,字符,整數等)上工作。本質上,二進制AND只是以二進制形式將數字的每個位置中的位進行邏輯AND。

舉例&():

00000010 & //2 
00000101 = //5 
-------- 
00000000 // 0 

位或工作幾乎完全的方式按位與相同。唯一的區別是,結果中只有兩個比特中的一個比特需要爲1(如果兩個比特都是1,那麼結果在該位置也會有1)。符號是一個管道:|。再次,這與布爾邏輯運算符類似,即||。

示例| (OR):

00000010 | //2 
00000101 = //5 
-------- 
00000111 //7 

沒有布爾運算符對口按位異或,但有一個簡單的解釋。如果兩個輸入中的任何一個或另一個輸入是1,則異或操作取兩個輸入並返回1,但如果兩者都不相同則返回1。也就是說,如果兩個輸入都是1或兩個輸入都是0,則返回0.按位異或 - 對於^符號的操作符^,對每對位執行異或運算。獨佔 - 或通常縮寫XOR。

舉例^(XOR):

00000010^//2 
00000101 = //5 
-------- 
00000111 //7 

如果你進入一個按位運算符我建議你一支筆和紙,想象2個隨機8位數字和工作他們都起來在紙上(所有按位操作)。然後你可以找到一個Programmer計算器並檢查你的結果。

+0

謝謝....... –

+0

沒問題,如果您需要更多幫助請不要猶豫問。我會超過很高興爲您提供幫助。此外,如果您發現我的答案有幫助,我會大大apreciate如果你upvote /接受我的答案。謝謝。 – du4ko