我们可以在C++中的3个变量之间使用两个运算符吗

我想比较四个整数,看看它们是否相等。于是写了下面的,

    int a = 1, b = 2, c = 3, d = 4;
    if (a != b != c != d)
    {
        //do something
    }

这显然没有显示错误。但是,事实上,给出了错误的答案。有人可以解释一下吗?

回答

if 语句中的条件

if (a != b != c != d)

可以等效地重写为

if ( ( ( a != b  ) != c ) != d )

第一个子表达式的a != b计算结果为 boolean true。所以你有了

if ( ( true != c ) != d )

子表达式true != c被隐式转换为

if ( ( 1 != c ) != d )

这显然不是您想要的,尽管它是有效的 C++。

看来你的意思是这样的

if ( ( a != b ) && ( b != c ) && ( c != d ) )

  • `if ( ( a != b ) && ( b != c ) && ( c != d ) )` 允许 `a == d`。`if (std::set{a, b, c, d}.size() == 4)` 似乎更合适。

以上是我们可以在C++中的3个变量之间使用两个运算符吗的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>