提问人:Oleksandr Novik 提问时间:8/3/2021 最后编辑:songyuanyaoOleksandr Novik 更新时间:8/28/2021 访问量:653
为什么 true & false 在 C++ 中等于 1?
Why is true && false equal to 1 in C++?
问:
我正在玩布尔值,最后得到了这行代码:
std::cout << true && false;
出于某种原因,这会产生.如果要求双方都为真,这怎么可能产生?1
&&
1
答:
6赞
rawrex
8/3/2021
#1
由于运算符的优先级,打印 ,然后 (the ) 的返回值与 .true
operator<<
std::cout
&&
false
(std::cout << true) && false; // Equivalent
13赞
songyuanyao
8/3/2021
#2
因为 的优先级高于 ,所以与 相同(即先打印出来,然后将返回的转换为 ,用作 的操作数,最后丢弃结果)。operator<<
operator&&
std::cout << true && false;
(std::cout << true) && false;
true
std::cout
bool
false
operator&&
请注意,可以通过运算符 bool
转换为,即使它被标记为 .std::cout
bool
operator&&
explicit
如果流没有错误并且已准备好进行 I/O 操作,则返回。具体而言,返回 .
true
!fail()
您可以通过添加括号来指定优先级。
std::cout << (true && false);
评论
<<
>>