2014-10-09 43 views
-3

我的朋友和我遇到了一個有趣的笑話C > C++,因爲他喜歡C over C++。但是,我很好奇執行該代碼段的有效性。我跑和輸出被1 0 0 1使用C++ 98/C++編譯11郵政運營商評估訂單

int C; 
C = 1;std::cout << (C++ < C) << "\n"; 
C = 1;std::cout << (C < C++) << "\n"; 
C = 1;std::cout << (C++ > C) << "\n"; 
C = 1;std::cout << (C > C++) << "\n"; 

,和真,假FALSE,FALSE爲Java。

我的問題是這些陳述的評估過程如何工作?我特別困惑,因爲C++ < CC > C++在Java中相互矛盾,而在C++中保持一致,以及C++ < C的邏輯,據推測左側和右側相等或左側大於右側。

+0

互相矛盾如何? – 2014-10-09 04:39:42

+0

這個問題的C++一半是重複的;其他一些語言定義它。 – o11c 2014-10-09 04:41:17

+0

也https://stackoverflow.com/questions/949433/why-are-these-constructs-undefined-behavior – Boann 2014-10-09 04:43:02

回答

2

根據規範,C/C++的結果未定義,因爲未指定評估順序。詳情請參閱this answer

+0

http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequencepoints – o11c 2014-10-09 04:40:47