Machine-translated by Google. Questions are authored in English.
Top

Discussion

What will be the output of the following C code?

#include <stdio.h>
    int main()
    {
        if (~0 == 1)
            printf("yes\n");
        else
            printf("no\n");
    }

 

  • A.yes
  • B.no
  • C.compile time error
  • D.undefined

Answer: B

Correct answer: no

~0 inverts every bit of zero, giving all ones - which as a signed int is \( -1 \), not 1.

So the test is -1 == 1, which is false, and the else branch prints no. The identity worth remembering is \( \mathtt{\sim}x = -x-1 \), which gives \( \mathtt{\sim}0 = -1 \) immediately. The confusion is with the logical !, where !0 genuinely is 1 - one character apart and opposite in result.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.