簡體   English   中英

執行條件運算符

[英]execution of conditional operators

int j=4;
(!j!=1)?printf("Welcome"):printf("Bye");

在我看來,在上面的代碼段中,第一個j!=1將導致true,而!true是false,這必然導致打印Bye但是我得到Welcome作為輸出。

誰能解釋這個?

!j!=1(!j)!=1 ,不是!(j!=1)

這是因為! (NOT)的運算符優先級!=因此...

j = 4; // 4
!j // 0

在您的情況下, 0 != 1為true,因此將打印“ Welcome”。

為了獲得理想的結果,您的情況必須為!(j!=1)

邏輯非運算符! 具有比“不等於”運算符更高的優先級!=

因此您的條件等於((!j) != 1)

參見https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence

一元運算符'!' 具有比'!='高的優先級。

閱讀-https: //www.tutorialspoint.com/cprogramming/c_operators_precedence.htm

! 首先執行,因為一元運算符! 具有比!=更高的優先級。

!4變為0然后0 != 1變為true

因此,輸出為Welcome

暫無
暫無

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

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