按位'&'运算符

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)