3
A
回答
6
它依賴於編譯器,但可觀察行爲必須是沒有任何反應。在實踐中,我確信大多數編譯器都不會爲空表達式忽略任何代碼。
執行格式良好的程序的一致性實現應產生與具有相同程序和相同輸入的抽象機器的相應實例的可能執行之一相同的可觀察行爲。
而且可觀察到的行爲被定義爲:
的至少要求在一致的實現是:
- 訪問易失性的對象進行評估嚴格按照抽象機的規則。
- 在程序終止,寫入到文件中的所有數據將是相同的,以根據所述抽象語義,該程序的執行將產生的可能結果中的一個。
- 交互式設備的輸入和輸出動力應發生在這樣一個方式是促使輸出程序等待輸入前實際交付。什麼構成交互設備是由實現定義的。
這些統稱爲程序的可觀察行爲。
這確實是一個實施的唯一要求。它通常被稱爲「as-if」規則 - 只要可觀察行爲符合預期,編譯器就可以做任何事情。
對於它的價值,這些空表達式被稱爲空語句:
與表達缺失被稱爲空語句表達式語句。
如果你真的想要一個NOP,你可以嘗試:
asm("nop");
這一點,然而,有條件地支持其行爲是實現定義。
1
,或者如果它是依賴於編譯器。
這是編譯器的依賴(「AS-if規則」),但最合理的優化編譯器會忽略效率的緣故空語句,他們一般不會發出NOP
指令。
相關問題
- 1. SQL Reporting Services表達式用於評估字段是否爲空&|空白空間
- 2. Ruby表達式評估:空白是否重要?
- 3. 評估表達式
- 4. 評估表達式爲Excel公式
- 5. 評估表達式是否是重言式
- 6. C++表達式評估。 「評估」是什麼意思?
- 7. 調試表達式評估
- 8. 表達式樹評估
- 9. Xtext評估表達式
- 10. 評估數學表達式
- 11. 表達式評估順序
- 12. 表達式無法評估
- 13. 內聯表達式評估
- 14. 評估集合表達式
- 15. 評估前綴表達式
- 16. JasperReports表達式評估
- 17. 遞歸表達式評估?
- 18. 評估表達式樹
- 19. 評估lambda表達式
- 20. AngularJS不評估表達式
- 21. Groovy表達式評估
- 22. 表達式評估序列
- 23. 如何評估表達式?
- 24. 無法評估表達式
- 25. 後綴表達式評估
- 26. 數學表達式評估
- 27. 評估布爾表達式
- 28. 評估Oracle表達式
- 29. Java Eclipse評估表達式
- 30. 評估表達式樹
很棒的回答。我的問題的根源在於解決了海灣合作委員會在開啓pedantic時產生的錯誤。特別是,「錯誤,額外」,「這讓我想知道編譯器在做什麼」額外的事情「。 – LeviX