A += B == 1 是什么意思

What is the meaning of A += B == 1

我遇到过运算符 = 的一种用法。它是这样的:

A += B == 1;

其中 A 和 B 是整数,这种用法是我在函数体中找到的。

我只是对第二种 == 用法感到困惑。

我当然知道A = B = 1;

的意思

谁能给我解释一下?

此代码:

 A += B == 1;

在逻辑上等于:

bool b = B == 1;
A += b;

注意:bool可以隐式转换为inttrue为1,false为0)

==的优先级高于+=,所以先执行

B == 1是一个布尔表达式,可以为false或true

让我们称其为 bool 'result'。

A += result 是加法 + 赋值(就像您可能已经知道的 A = A + result)。

因为在您的例子中 A 是 int,布尔值 result 如果为真则隐式转换为数字 1,如果为假则为 0。 (它也适用于其他数字类型)

更多关于隐式转换的信息:http://en.cppreference.com/w/cpp/language/implicit_conversion

所以,最后,这在逻辑上等同于 "increment A if and only if B is equal to 1" :

if (B == 1)
  A += 1;