解释C程序的结果

explain the Outcome of C program

我看到了以下打印输出的代码 "Same" 但我在理解这个程序时遇到了问题。请帮助我理解程序。

int  main() 
{ 
   unsigned int x = -1; 
   int y = ~0; 
   if(x == y) 
      printf("same"); 
   else
      printf("not same"); 
   return 0; 
}

输出"Same"是怎么来的?请帮我看看这里发生了什么。

Unsigned int x = -1 具有位标志(32 位):

 11111111111111111111111111111111

int 0 有位标志(32 位):

 00000000000000000000000000000000

~0 是 0(按位)的取反,即(32 位):

 11111111111111111111111111111111

作为旁注:

 unsigned int x = -1;  

等同于

 unsigned int x = UINT_MAX.