在C++中编写这样的代码时:

bool allTrue = true;
allTrue = allTrue && check_foo();
allTrue = allTrue && check_bar();

如果check_bar()返回check_foo(),则不评估false。这称为short-circuiting or short-circuit evaluation,是惰性评估原则的一部分。

这可与复合赋值运算符&=一起使用吗?
bool allTrue = true;
allTrue &= check_foo();
allTrue &= check_bar(); //what now?

对于逻辑OR,将所有&替换为|,将true替换为false

最佳答案

从C++ 11 5.17 Assignment and compound assignment operators:



但是,您正在混淆逻辑AND,它会短路,而按位AND则不会。

在标准中找不到文本片段&&=,这就是您要执行的操作。这样做的原因是它实际上不存在:没有逻辑分配运算符。

07-26 01:46