今天在知乎上看到一道關於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更小的整型變量。