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