(unsigned)~0
和(unsigned)1
有什么区别?为什么unsigned
的~0
是-1
和unsigned
的1
是1
?它是否与无符号数字存储在内存中的方式有关。为什么一个无符号数给出了一个签名结果。它也没有给出任何溢出错误。我使用GCC
编译:'(无符号)1'和'(无符号)〜0'之间的区别
#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
}
不是'〜0'的行为是依赖于实现的读取:[在C中计算数据类型的范围](http://stackoverflow.com/questions/17796041/calculating-ranges-of-data-types-in-c/17796122#17796122) –