为什么真&&假等于C++中的1?



我一直在玩布尔运算,最后得到了这行代码:

std::cout << true && false;

由于某种原因,其产生CCD_ 2。如果为了产生1&&要求两边都为真,这怎么可能呢?

由于operator<<的优先级高于operator&&,因此std::cout << true && false;(std::cout << true) && false;相同(即先打印出true,然后将返回的std::cout转换为bool,作为operator&&false的操作数,最后丢弃结果)。

注意,std::cout可以通过operator bool转换为bool,即使标记为explicit,也可以用于上下文转换(包括作为内置operator&&的操作数)。

如果流没有错误并且可以进行I/O操作,则返回true。具体返回10。

您可以通过添加括号来指定优先级。

std::cout << (true && false);

由于运算符的优先级,打印true,然后返回operator<<(std::cout)的&&false

(std::cout << true) && false; // Equivalent 

相关内容

  • 没有找到相关文章

最新更新