關於short i = 65535和short i = 65536輸出問題

#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;

發佈了27 篇原創文章 · 獲贊 12 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章