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

Discussion

What is the output of this C code? 

   int main()
    {
        int x = -2;
        x = x >> 1;
        printf("%d\n", x);
    }

 

  • A.1
  • B.-1
  • C.2 ^ 31 - 1 considering int to be 4 bytes
  • D.Either (b) or (c)

Answer: B

Correct answer: -1

-2 is all ones followed by a zero: \(\ldots 1110\). Shifting right on a signed negative value is an arithmetic shift in every mainstream implementation, so the sign bit is copied in from the left and the result is \(\ldots 1111 = -1\). Arithmetically it is a division by two, rounding toward negative infinity.

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

Post your comment

Please log in or register to post a comment.