为什么是'if(1 == 1 == 1 == 1 == 1);' 正确,但'if(-1 == -1 == -1 == -1 == -1);' 假?

玩家编码器
if (1 == 1 == 1 == 1 == 1)
    std::cout << "right";

上面的代码显示为“正确”。

if (-1 == -1)
    std::cout << "right";

上面的代码也显示“正确”。

if (-1 == -1 == -1)
    std::cout << "right";

上面的代码未显示任何内容。(因为if statement我猜不是真的吗?)

我想知道为什么发生这种奇怪的事情。

因为-1等于-1并且无论我重复多少次(据我所知),该语句始终为TRUE。

阿斯莫

从左到右评估条件,因此以下条件语句

if (-1 == -1 == -1)
    std::cout << "right";

相当于

if (true == -1)//since -1 === -1
    std::cout << "right";

相当于

if (1 == -1) // true is casted to 1
    std::cout << "right";

相当于

if (false)
    std::cout << "right";

因此,该语句std::cout << "right";通常不会执行,您一无所获。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章