Leo*_*Leo 3 c++ int boolean operators
我一直在用我的部分代码挣扎了一段时间,我终于发现问题在于一个简单的测试,它没有给我我期望的结果.
if (2) //=> true
if (2 & true) //=> false
if (bool(2) & true) //=> true
Run Code Online (Sandbox Code Playgroud)
我不明白的是为什么第二行导致错误.我的理解是每个非零整数在测试中都被认为是真的.
Luc*_*ore 13
因为按位和之间是2和true假的.
&(按位运算符)与&&(逻辑运算符)不同.
true演员int是1.
那么2 & true是2 & 1哪个是假的-因为0000000000000010 & 0000000000000001 == 0.(位可能会有所不同)
然而bool(2) == 1,1 & 1是true.