2.1.1 算術類型
【char(8位)可以存放機器基本字符集中任意字符對應的數字值。
wchar_t(16位)可以存放機器最大擴展字符集的所有字符。
char16_t和char32_t(16及32位)爲Unicode字符集服務(用於表示所有自然語言中字符的標準)。】
【int、short、long、long long 前加unsigned 可以變爲無符號類型,其中unsigned int 可以縮寫爲unsigned。
char 的表現形式同樣有帶符號的及不帶符號的,編譯器決定其具體表現爲哪一種。】
【如何選擇類型:
當明確知曉數值不可能爲負時,選用無符號類型(增強代碼的健壯性);
使用int 執行整數運算尺寸不足時,選用long long(在數值嚴格依賴int 的表示範圍時,因爲不同機器上int 的尺寸可能不同,此時程序成爲不可移植的);
因爲char 在不同的編譯器中表現形式不同,儘量避免char 直接參與表達式的運算;
執行浮點數運算選用double,精度高於float 且計算代價與其相差無幾。】
2.1.2 類型轉換
【對字符賦整數值,當等號右側沒有用引號時,該整數值代表所存儲字符在機器中的機器值。】
【表達式的結果與將其付給哪種類型的變量無關:
int a = 1, b = 3;
double c = a/b;
最終c 的值爲0。】
【當爲無符號類型賦值超出其表示範圍時,結果是初始值對無符號類型表示範圍取模後的餘數。
當爲帶符號類型賦值超出其表示範圍時,結果是未定義的。
當一個算數表達式中既有無符號數又有int 數時,那個int 值就會轉換成無符號數;int 轉換成無符號數的過程與直接把int 賦值給無符號變量相同。】
2.1.3 字面值常量
【十進制字面值的類型是有符號數變量中能容納當前值的,尺寸最小的變量類型。
八進制和十六進制字面值的類型是有符號數和無符號數變量中能容納當前值的,尺寸最小的變量類型。】
【字符串字面值的類型實際上是由常量字符構成的數組,編譯器在每個字符串的末尾處添加一個空字符('\0')以示結束。
所以字符串字面值的長度要比實際內容多1。】
【不可打印的字符(換行符、空字符、製表符等)與有特殊含義的字符(反斜線、單雙引號、問號等),程序員不能直接使用,必須使用轉義序列。】
【通過給整形和浮點型字面值加後綴,或給字符和字符串字面值加前綴,可以指定字面值的類型。】