我们都知道&&(double和)for和condition.单个和内部发生的条件如何执行条件.
if(true & bSuccess)
{
}
Run Code Online (Sandbox Code Playgroud)
Arm*_*yan 13
true & bSuccess
Run Code Online (Sandbox Code Playgroud)
在此表达式中,两个操作数都被提升为int,然后&进行求值.如果bSuccess是真的,你会得到1 & 1它1(或true).如果bSuccess为false,你会得到1 & 0哪个0(或false)
因此,在布尔值的情况下&&并且&将始终产生相同的结果,但它们不完全等效,因为&它将始终评估它的两个参数,并且&&如果第一个参数为假,则不会评估它的第二个参数.
例:
bool f() { std::cout << "f"; return false; }
bool g() { std::cout << "g"; return true; }
int main()
{
f() && g(); //prints f. Yields false
f() & g(); //prints fg or gf (unspecified). Yields 0 (false)
}
Run Code Online (Sandbox Code Playgroud)
在你的情况下,因为bSuccess是bool然后
if(true & bSuccess)是完全相同一样if(true && bSuccess)
但是你用过这个:
short i = 3;
short k = 1;
Run Code Online (Sandbox Code Playgroud)
if(i & k) 结果将是真的:
0000 0000 0000 0011
&
0000 0000 0000 0001
-------------------
0000 0000 0000 0001 true
Run Code Online (Sandbox Code Playgroud)
&对单个位进行操作,这里位1在两种情况下都是相同的,因此您的结果是正确的.
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
5785 次 |
| 最近记录: |