Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
438 views
in Technique[技术] by (71.8m points)

c - Bitwise '&' operator

I am lacking some basic understanding in bitwise '&' operator.

5 = 101
4 = 100

So why the output of the below if condition is true cause and of bits 101 & 100 should be false:

#include <stdio.h>
main()
{
   if(5&4)
      printf("Yes
");
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

5 is 101.

4 is 100.

5 & 4 is not 0:

101 
100 &
↓↓↓
100

Problem solved ?


Clarification:

In C, every non-zero value satisfies the if condition. Meaning, if you write:

if (-5) {
  if (100) {
     // reachable code
  }
}

Whereas:

if (0) {
  destroyTheWorld(); // we are safe
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...