有什么区别(unsigned)~0
and (unsigned)1
。为什么是unsigned
of ~0
is -1
and unsigned
of 1
is 1
?这是否与无符号数在内存中的存储方式有关。为什么无符号数会给出有符号的结果。它也没有给出任何溢出错误。我在用GCC
编译器:
#include<sdio.h>
main()
{
unsigned int x=(unsigned)~0;
unsigned int y=(unsigned)1;
printf("%d\n",x); //prints -1
printf("%d\n",y); //prints 1
}
Because %d
是一个有符号整型说明符。使用%u
.
打印4294967295
在我的机器上。
正如其他人提到的,如果将最高的无符号值解释为有符号值,则会得到 -1,请参阅维基百科条目二进制补码 http://en.wikipedia.org/wiki/Signed_number_representations#Two.27s_complement.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)