我看到下面的代码打印输出“相同”,但我在理解这个程序时遇到了麻烦。请帮我理解这个程序。
int main()
{
unsigned int x = -1;
int y = ~0;
if(x == y)
printf("same");
else
printf("not same");
return 0;
}
输出“相同”如何出现?请帮助我了解这里发生的事情。
答案 0 :(得分:10)
无符号整数x = -1有位标志(32位):
11111111111111111111111111111111
int 0具有位标志(32位):
00000000000000000000000000000000
~0是0(按位)的否定,即(32位):
11111111111111111111111111111111
作为旁注:
unsigned int x = -1;
相当于
unsigned int x = UINT_MAX.