關於char型賦值給int型

今天在知乎上看到一道關於C++的面試題:


   char c=255;

   unsigned short b=c;

   cout<<b<<endl;


輸出結果爲:


在VC上運行之後得到的輸出爲 65535.   (2^16-1)


減小 c 的值,輸出的b的值也相應減少。當 c = 127(2^7-1)時 輸出的b值與c一致,繼續減小,輸出的值與 c 值保持一致,直到爲0;

增大 c 的值,輸出的b值從0開始再次遞增,即當c = 256時,輸出爲 0 ;

繼續增大 c 的值,當 c 的值增大到65536時(2^16),輸出的值再次爲0,輸出的值繼續隨 c 遞增;

再繼續增大c 的值,當 c 的值增大到4294967296時(2^32),輸出的值又再次變爲0,輸出的值再次隨 c 遞增;


當將char改爲 unsigned char時,

該程序段輸出的結果爲 255;

但繼續增大 c ,c=256時,輸出變爲0,再繼續增大後的輸出與前面一致。


由此可初步得到:

char  可存 256 個數  即 8位;

short 可存 65536個數 即 16位;

 long 可存 4294967296個數 即 32位;

不聲明int的類型 則默認爲 long型。


char 可以看做一種比short更小的整型變量。

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