操作员评估指令后
Post operator evaluation order
我和朋友偶然发现了一个有趣的笑话C > C++
,因为他喜欢C而不是C++。然而,我很好奇执行该代码段的有效性。我运行并编译了
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";
使用C++98/C++11时的输出为1 0 0 1,Java的输出为true、false、false和false。
我的问题是,评估这些声明的过程是如何运作的?我特别困惑,因为C++ < C
和C > C++
在Java中相互矛盾,而在C++中保持一致,以及C++ < C
的逻辑,其中假定左侧和右侧相等或左侧大于右侧。
由于未指定求值顺序,因此规范未定义C/C++的结果。有关详细信息,请参阅此答案。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- std::condition_variable::wait()如何评估给定的谓词
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- C++:对不存在的命名空间使用命名空间指令
- 函数名是c中该函数的第一条指令的地址吗
- c++11评估顺序(未定义的行为)
- 错误:无效的预处理指令 #i 的意思是 #if?
- 组装指令中乘法的下部和上部是什么
- 如何使用"equal to"以外的评估编写开关语句
- OpenMP 与有序和关键指令并行
- 嵌套 if 中没有返回评估
- C++中的移动分配出现问题.非法指令: 4.
- 嵌套命名空间的"using"指令,但需要命名内部命名空间
- 懒惰的参数评估try_emplace?
- 在实践中,在运行时为零的乘法中是否有任何"lazy"评估
- C++CMake编译指令与
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- AVX 指令中寄存器和指针之间的客观差异
- 操作员评估指令后