只需一小句代码,如下:
printf("%dn", ~(unsigned int)0 / 2);分析:
当无符号0以二进制储存在内存中的时候,每一位都为0,以32位int为例,(unsigned int)0的二进制为:
00000000000000000000000000000000按位取反(~)后,变成:
11111111111111111111111111111111此时的十进制为:
4294967295除以2(因为int类型中有一半表示负数且比正数多一个)之后为:
2147483647即为32位int类型最大值。