我正在用C ++阅读这段代码
http://ajmarin.alwaysdata.net/codes/problems/952/并且我不明白代码中的这个&=
:
int k = 5;
int ts = 5;
bool possible = true;
它有这条线:
if(!(possible &= k == ts))
break;
我想知道"&="
是什么意思我是C ++语言的新手,而且我从来没有见过类似这样的东西,例如在java中,或者至少我不知道含义。
语句的右侧返回"1"
,因为(k == ts
)(5 == 5
)但左手(possible &= k
)不在&#39 ; t知道意思..
谢谢
答案 0 :(得分:5)
它相当于:
possible &= (k == ts);
if (! possible)
并进一步等同于
possible = possible & (k == ts);
if (! possible)
此处,&
是按位AND。如果num & 0
的最低有效位为0
或num & 1
,则1
将始终为您提供num
而1
将为您提供0
否则。
要继续阅读,请查看
答案 1 :(得分:2)
这是一个按位AND分配,它是Compound Assignment Operator。它等同于以下声明:
possible = possible & (k == ts);
if(!possible)
....
答案 2 :(得分:1)
& = Bitwise AND将结果分配给lhs(a& = b => a = a& b)。 (比如+ =)
它将执行逻辑AND并将结果分配给可能。
由于Operator precedence,表达式将类似于:possible &= (k == ts)
。
这意味着它将评估(k == ts)
导致布尔值,使其成为逻辑,并使用possible
将其存储在possible
中并作为结果返回。