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是多少位的都能使之獲得最大值編譯