c++ - 为什么 (1 < 1 < 1) 在 C++ 中返回 true?

标签 c++

几天前我遇到了这个谜语

main ()
{
    cout << (1 < 1 < 1  ? "true" : "false") << endl;
}

我不明白为什么它会返回 true。我原以为是假的。

更多:

cout << (2 < 2 < 2  ? "true" : "false") << endl;    // returns true
cout << (0 < 0 < 0  ? "true" : "false") << endl;    // returns false
cout << (-1 < -1 < -1  ? "true" : "false") << endl; // returns false
cout << (-2 < -2 < -2  ? "true" : "false") << endl; // returns false

它似乎对严格大于 0 的值返回 true,否则返回 false。

有人对此有解释吗?提前致谢

最佳答案

表达式1 < 1 < 1被解析为

(1 < 1) < 1

在这里,1 < 1false , 转换为 0 , 屈服

(0) < 1

这是真的。

关于c++ - 为什么 (1 < 1 < 1) 在 C++ 中返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32022709/

相关文章:

c++ - 非递归二进制字符串置换生成器

c++ - 引用指向 int 的指针会导致错误

c++ - 为什么 setjmp/longjmp 的这种用法是未定义的行为?

c++ - 当一个函数结束时,它的局部变量会被释放吗?

c++ - 如何使用 LuaBridge 从文件加载表格? [来自 C++ 的 Lua]

c++ - 如何使用threadfence/CUDA5.5

c++ - 什么是 undefined reference /未解析的外部符号错误以及如何修复它?

c++ - 为什么 setspacing 属性不起作用?

c++ - 我删除不正确吗?

c++ - 仅为基本数据类型制作模板