回答
C11,6.6節的一部分:
常量表達式可以在翻譯過程中,而不是進行評估運行時間,因此可以用於常量可能存在的任何地方。
所以是簡單常量摺疊是強制性的,此代碼段是有效的標準C.
謝謝!這是在舊版本的標準中的情況嗎? –
@MikeGraham:我沒有舊版本的標準版,但它似乎甚至[MSVC](http://msdn.microsoft.com/en-us/library/tby3xex3(v = vs.80))。 aspx)使用這個定義,這表明它存在於C89中。 –
@MikeGraham C89標準似乎有所有相關部件出現,所以是的。 – Khoth
標準明確地定義了這一點。
組聲明,6.7.5.2(C99):
除了可選的類型合格音響ERS和關鍵字靜態的,則[ 和]可限定表達式或*。如果它們定義了一個表達式 (它指定了一個數組的大小),表達式應該有一個整數類型 。如果該表達式是一個常量表達式,則其應該具有大於零的值。
- 1. std ::地圖屬性 - C +標準要求?
- 2. C++標準要求C連接函數是否爲「noexcept」?
- 3. 是否使用C++標準所要求的allocator :: rebind?
- 4. 標準是否要求EOF爲負值?
- 5. alloca是C++標準的一部分嗎?
- 6. 是C標準的TRUE/FALSE部分嗎?
- 7. Python標準庫真的是標準嗎?
- 8. u_char是標準嗎?
- 9. cmake:不需要時添加C++標準
- 10. 可以在標準C中處理中斷嗎?
- 11. Python不是標準化語言嗎?
- 12. 不必要的標準化
- 13. size_t僅在C++標準或C標準中嗎?
- 14. IEC 61968標準是不是「標準化」?
- 15. MS C編譯器要求變量的聲明位於函數的開頭。這是由標準支持嗎?
- 16. WPF是ECMA標準庫嗎?
- 17. IBM JRE是標準VM嗎?
- 18. ConstraintLayout是新標準嗎?
- 19. 它是標準的C++
- 20. C#進程中斷大標準輸入
- 21. 示例要求標準和設計標準
- 22. 這是SOAP請求的標準或通用編碼嗎?
- 23. 刮網站的要求/第二標準是什麼?
- 24. 多標準要求對短期MySQL表
- 25. 在這裏可以使用標準斷言而不是模擬期望嗎?
- 26. 是JDK斷言需要使用的嗎?
- 27. 雖然不批准真正的要求
- 28. 550 5.7.1此消息不符合要求的標準
- 29. 選擇符合標準且不符合要求的行
- 30. 標準C中需要文字後綴嗎?
標題似乎並不符合問題,常量摺疊是一種優化技術,絕對不是標準所要求的,但是允許的。 「1 + 1」是一個常量表達式,它的屬性在標準中定義。看起來你的問題是關於常量表達式。 –