NoS*_*tAl 10 c++ logical-operators
有时我想做
bool success= true;
success &&= dosmthing1();
success &&= dosmthing2();
success &&= dosmthing3();
if (success)
Run Code Online (Sandbox Code Playgroud)
让我们忽略我可以使用异常...我的问题是它是否由C++标准保证,对我的用例来说&=就像不存在&&=一样?...
编辑:做smthing-s返回布尔
这取决于你期望&&=的工作方式.如果你想要x &&= y();等同于x = x && y();,那么不,因为在这个表达式y()中,如果x以false开头,则不会被调用,但是在x &= y();它中.
如果你不希望它是短路的并且你的所有表达式都有类型bool(不是可转换为bool指针,整数或用户定义的对象),它就可以工作.但这有很多限制.
不,&是一个按位,&&是布尔和.如果dosmthing*返回1或0以外的值,则结果将不同.