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
可以隐式转换为int
(true
为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;
我遇到过运算符 =
的一种用法。它是这样的:
A += B == 1;
其中 A 和 B 是整数,这种用法是我在函数体中找到的。
我只是对第二种 ==
用法感到困惑。
我当然知道A = B = 1;
谁能给我解释一下?
此代码:
A += B == 1;
在逻辑上等于:
bool b = B == 1;
A += b;
注意:bool
可以隐式转换为int
(true
为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;