#include <stdio.h>
int main()
{
short i = 65535;
printf("i=%d\n", i);
return 0;
}
結果:-1
分析:因爲內存中65535存儲內容的16進製表示爲:0x0FFFF,將此值傳遞給16位的變量i時,i只能接受到0xFFFF;看見首位爲1,編譯器會認爲i是個負值,至於負值的絕對值=源碼取反(0x0000)+1 = 0x0001。因此最終輸出-1。
#include <stdio.h>
int main()
{
short i = 65536;
printf("i=%d\n", i);
return 0;
}
結果:0
分析:因爲內存中65536存儲內容的16進製表示爲:0x010000,將此值傳遞給16的i的時候,i接受到0x0000,編譯器認爲i=0;