1
A
回答
1
不,如果你有(價值& &什麼)和價值成爲虛假的一切都被忽略。
0
從邏輯上講,它並不需要,因爲第一個條件爲false會使整個語句爲false。這在技術上被稱爲「短路評估」。這就是爲什麼你不應該創建t2
和t3
條件,產生副作用,並假設它們發生在循環的每個週期。
0
對於(j = 0;(T1 & & T2)& &(T2 & & T3); J ++); //應該工作
誤讀了問題。不,它不會。 C使用短路評估,這意味着一旦它是錯誤的,它是錯誤的。
1
在for
循環中以及在使用&&
或||
的所有其他情況下,評估從左到右進行,直到答案已知。此時評估停止。這被稱爲短路。
這是一個非常重要的功能,因爲它可以讓您通過在之前插入檢查來「保護」後續表達式。例如,
if (ptr != 0 && ptr->property == 42) {
}
不會崩潰的ptr == NULL
僅短路的原因。如果不是這樣,程序員將被迫寫得不太愉快
if (ptr != 0) {
if (ptr->property == 42) {
}
}
以避免崩潰。
1
不,C和C++保證條件「短路」 - 意味着只要條件可以確定,「測試」就會停止 - 如果&&
的內容爲假,那麼確定它永遠不會成爲true
,如果||
中的內容爲true
,則不能爲false。
這使得它的安全做這樣的事情:
if (ptr != NULL && ptr->x > 10) ...
2
C的溫度將涉及邏輯AND和OR,所以只要表達式的結果是已知的短路表達式,評估將停止。給定的表達式爲:
t1 && t2 && t3
因爲它是一個邏輯AND運算符,只要T1的判斷爲假,T2和T3的評估將被跳過,因爲總的結果是已知的。
1
從ISO 9899 C standard(這個人是一個相當新的草案版本,但由於ANSI-C的草案這一特定段落已經存在)
不同的是按位二進制&運算符,& &運營商保證 從左到右評估;在第一個操作數的評估之後有一個序列點。 如果第一個操作數將 等於0,則第二個操作數不會被評估爲。
重點煤礦,所以是的,編譯器必須儘快遇到的操作,這將導致它返回帶有短路邏輯和條件0.
相關問題
- 1. 基於日期測試條件邏輯
- 2. ILNumerics:複方試驗不合邏輯:和兩個邏輯條件
- 3. 撰寫與條件邏輯
- 4. 反轉邏輯與條件
- 5. 爲什麼要避免單元測試中的條件邏輯?
- 6. 多個條件的邏輯運算符
- 7. 基本布爾邏輯 - 如何測試條件僅當其它條件爲真
- 8. 條件邏輯
- 9. 條件邏輯
- 10. 條件邏輯
- 11. 多個條件PHP與OR邏輯運算符不返回false
- 12. XSL如果:測試與多個測試條件
- 13. 創建多個文件上傳邏輯
- 14. 應用測試VS邏輯測試
- 15. 燼:組件的測試WillDestroyElement邏輯在集成測試
- 16. 在CasperJS中分割測試文件 - 與它的邏輯掙扎
- 17. 條件邏輯在HAML
- 18. 「no_entries」條件邏輯
- 19. PHP條件邏輯
- 20. SQL條件邏輯
- 21. nhibernate查詢邏輯測試
- 22. UI邏輯單元測試
- 23. 測試類似的邏輯
- 24. Java邏輯測試問題
- 25. 測試梯形圖邏輯
- 26. 邏輯測試中的NSUserDefaults
- 27. 測試模糊邏輯
- 28. 多邏輯運算符|| (OR)for循環中的條件C
- 29. 重構過多的條件邏輯
- 30. Java中的多條件邏輯
參見[短路評價(HTTP:// en.wikipedia.org/wiki/Short-circuit_evaluation)。 – chrisaycock 2013-02-11 00:59:17