語言的對於處理器的字長問題

unsigned int zero = 0;
unsigned int compzero = 0xFFFF; 
對於一個int型不是16位的處理器爲說,上面的代碼是不正確的。應編寫以下:
signed int compzero = ~0; spa

爲何會這樣,我百度了下,有人這樣回答,我以爲不錯,因此,特別記錄下來。編譯器

這與多少位的處理器無關,是編譯器決定的。當int爲32位二進制數時,0xFFFF才佔了一半的位數,顯然不是最大值0xFFFFFFFF;但~0卻就是0xFFFFFFFF,因此signed int compzero = ~0;這個寫法就很保險,不管int是多少位的都能使之獲得最大值編譯

相關文章
相關標籤/搜索