(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) –