假設我在C中有以下循環:while(x1 & & x2)。 如果第一個條件爲假(x1 == 0),那麼while循環會檢查第二個條件嗎?While while循環檢查每個條件嗎?
2
A
回答
3
如果第一條件爲假(X1 == 0)然後將while循環檢查第二個條件?
不會的。它們被稱爲short circuit evaluation。
不同的是按位二進制&運算符,& &運營商保證 左到右的評價;如果第二個操作數被評估,則在第一個和第二個操作數的評估之間存在一個序列點。如果第一個操作數等於0,則不計算第二個操作數 。
同樣在cond1 || cond2
,如果cond1
計算結果爲真正然後cond2
將不進行評估。請參閱:C11, 6.5.14:
與按位|運算符||運營商保證 從左到右評估;如果第二個操作數被評估,則在第一個和第二個操作數的評估之間存在一個序列點。如果第一個操作數不等於0,則不會評估第二個操作數 。
0
不,如果第一個條件是錯誤的,它會直接停在那裏。
如果你想檢查諸如if (arrayLength < 10 && array[15] == 'c')
之類的東西,假設arrayLength是數組的長度,那麼你可以避免像分段錯誤那樣的錯誤。
0
C執行短路評估。如果x1
是錯誤的,那麼整個表達式就不可能是真的,所以x2
永遠不會被評估。
1
如果第一個條件評估爲false,則第二個條件由標準而不是保證進行評估。
從C standard第6.5.13:
不同於按位二進制
&
運算符,操作者&&
保證左到右的評價;如果第二操作數是 求值,則在第一和第二操作數的評估 之間存在序列點。 如果第一個操作數 的值等於0,則不計算第二個操作數。
相關問題
- 1. 兩個條件while循環
- 2. While while循環條件中的數字
- 3. while while while循環while循環
- 4. while while while while while循環
- 5. while循環中的條件
- 6. while循環退出條件
- 7. while循環條件C++
- 8. while循環條件在c
- 9. JavaScript While循環條件Abbration
- 10. while循環條件 - matlab
- 11. 分配條件While循環
- 12. while while循環
- 13. while while循環
- 14. 轉換while循環到每個循環
- 15. for循環while while循環+附加條件
- 16. C#在while循環內退出while循環for if條件
- 17. 在while循環之外更改條件變量的狀態for while while循環
- 18. while循環中的多個條件PHP
- 19. C while循環多個條件數學
- 20. 兩個條件的JMeter While循環
- 21. while循環中的多個條件 - Javascript
- 22. 做while循環,增加多個條件
- 23. while循環中的多個條件C++
- 24. while循環有兩個條件
- 25. while循環中的多個條件
- 26. WHILE循環中的多個條件
- 27. JavaScript while while循環
- 28. setTimeout while while循環
- 29. while while循環? (JAVA)
- 30. fflush while while循環
這有什麼做用'while'(只有一個條件)的一切與'做'&&。 – melpomene
這是基礎,它涵蓋在任何基本的C教科書中。正如@melpomene指出的那樣,它與'while'無關。我建議你通過閱讀這樣一本書來正確地學習語言,而不是在這裏提出零星的問題。 –