Pro*_*mer 8 c bitwise-operators
我在按位'&'运算符中缺乏一些基本的理解.
5 = 101
4 = 100
Run Code Online (Sandbox Code Playgroud)
那么为什么以下if条件的输出是真的因为比特101 & 100应该是假的:
#include <stdio.h>
main()
{
if(5&4)
printf("Yes\n");
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*oun 22
5是101
4是100
5&4 不是 0:
101
100 &
???
100
Run Code Online (Sandbox Code Playgroud)
问题解决了✓
澄清:
在C中,每个非零值都满足5 & 4条件.意思是,如果你写:
if (-5) {
if (100) {
// reachable code
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于:
if (0) {
destroyTheWorld(); // we are safe
}
Run Code Online (Sandbox Code Playgroud)