這個int c = (a==b)
正是我想在我的C程序中說的,用GCC編譯的。我可以做到,顯然(它工作得很好),但我不知道它是否會導致未定義的行爲。我的程序不會與其他編譯器或其他體系結構一起編譯。這是合法的ANSI C嗎?謝謝。對作業右側的評估
Q
對作業右側的評估
1
A
回答
4
1
int c = (a == b);
這是完全合法的。初始化是C標準(C99§6.7.8)的一部分,右側可以是任何賦值表達式,包括a == b
(當然,假設a
和b
被定義並且具有可比類型)。
+0
謝謝。正是我需要的答案。 – 2012-02-09 20:14:42
0
那麼,這取決於a
和b
是什麼類型。如果他們是支持平等檢查的類型,那麼是的,這是完全合法的。
1
如果在塊範圍聲明c
,這是完全有效的。
在文件範圍聲明時,它是無效的,因爲初始化器必須是常量表達式。
a == b
是一個表達式,在這個意義上說與另一個表達式a + b
或a & b
沒有什麼不同。
相關問題
- 1. 爲什麼不評估&&操作符的右側?
- 2. 在評估右側之前,是否有可能強迫`=`的左側完全評估爲參考?
- 3. io作業操作員沒有評估?
- 4. 解釋評估模塊化作業?
- 5. 從左到右評估
- 6. 如果左側表達式爲零,則不要評估右側表達式
- 7. 評估物業價值
- 8. 模型OCL評估與對象評估
- 9. Eclipse RCP圖標右下角右側作業進度條
- 10. C#的空合併運算符(?)的右側是否被懶惰地評估?
- 11. '浮動:右'評估爲'浮動:無'
- 12. 什麼時候評估了右值?
- 13. Javascript如何評估右括號?
- 14. 評估Asp.Net企業CMS(Sitefinity vs N2CMS)
- 15. 如何評估「企業」平臺?
- 16. ES6解構作業 - 奇怪的表情評估
- 17. 在沒有對象的情況下評估(評估itemText.style)
- 18. 如何對齊右側和左側
- 19. 對齊按鈕左側,中間,右側
- 20. 從右到左評估,從左至右鏈方法
- 21. 在左側發表評論在右側使用facebook php sdk
- 22. 對齊日期右側
- 23. Bootstrap popover右側對齊
- 24. 對齊到最右側
- 25. 評估對象爲布爾
- 26. AngularJS評估遞延對象
- 27. Android:評估對話框
- 28. 製作一個高的右側三角形作爲格的右側
- 29. 評估DOM操作性能
- 30. C操作符和評估
有什麼不明確的地方呢? o_O – kennytm 2012-02-09 20:11:08
什麼編譯器不接受它? – cnicutar 2012-02-09 20:11:54
所以,你的意思是答案是「是的,這是合法的」?你爲什麼會用另一個問題回答一個問題? – 2012-02-09 20:12:16