( 1)为什么没有逻辑运算符的赋值,就像按和和差分配一样?
bool a = true;
bool b = false;
a = a || b;
a ||= b; // syntax error!
a |= b; // OK.2)在布尔变量上应用位运算符的意义是什么?这和使用逻辑运算符一样吗?
发布于 2016-04-10 08:00:38
的确,&&=和||=在C中“缺失”了,我认为原因之一是C中的逻辑和OR执行短路,这在缩写形式中可能有点奇怪。但不要使用按位赋值操作符。相反,只需写:
a = a && b;
c = c || d;如果有规范的true/false值(1和0),按位运算符将工作。但是,如果应用于非正则值,如5和2,则会得到不同的结果(5 &2为1,但5&2为0)。
发布于 2016-04-10 07:51:12
a |= b的意思与a = (a | b)相同,只不过a的地址只计算一次。然后你去查一下晋升的规则,以及布道的任务。
https://stackoverflow.com/questions/36527204
复制相似问题