Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

C | Data Types | Question 1

  • Difficulty Level : Expert
  • Last Updated : 28 Jun, 2021

Predict the output of following program. Assume that the numbers are stored in 2’s complement form.

Take a step-up from those "Hello World" programs. Learn to implement data structures like Heap, Stacks, Linked List and many more! Check out our Data Structures in C course to start learning today.




#include<stdio.h> 
int  main() 
   unsigned int x = -1; 
   int y = ~0; 
   if (x == y) 
      printf("same"); 
   else
      printf("not same"); 
   return 0; 
}

(A) same
(B) not same


Answer: (A)

Explanation: -1 and ~0 essentially have same bit pattern, hence x and y must be same. In the comparison, y is promoted to unsigned and compared against x (See this for promotion rules). The result is “same”. However, when interpreted as signed and unsigned their numerical values will differ. x is MAXUNIT and y is -1. Since we have %u for y also, the output will be MAXUNIT and MAXUNIT.


Quiz of this Question

My Personal Notes arrow_drop_up
Recommended Articles
Page :