2014-10-09 44 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