標籤:char 32位 四捨五入 類型 nic 期望 符號 ble c++ prime
第二章 變數和變數類型
1. C++ 算數類型
bool 布爾 最小尺寸未定義
char 字元 8位
wchar_t 寬字元 16位
char16_t Unicode 字元 16位
char32_t Unicode 字元 32位
short 短整型 16位
int 整型 16位
long 長整型 32位
long long 長整型 64位
float 單精確度浮點型 6位有效數字
double 雙精確度浮點型 10位有效數字
long double 擴充精度浮點數 10位有效數字
如何選擇類型
- 明知數值不可能為負的時候,選用無符號類型。unsigned
- 使用 int 執行整數運算。在實際應用中,short 常常太小而long一般和int有一樣的尺寸。如果數值超過了int的表示範圍,選用long long。
- 在算數運算式中不要使用char 和bool,只有在存放字元或布爾值的時候才能使用它們。因為char在一些機器上是有符號的,而在另一些機器上又是無符號的。
- 浮點數運算選用double。
2. 類型轉換
- 當我們把一個非布爾類型的算數值賦給布爾類型時,初始值為0則結果位false,否則結果為true。
- 當我們把一個布爾值賦給非布爾類型時,初始值為false則結果為0,初始值為true 則結果為1.
- 浮點數賦給整數類型時,進行近似處理。結果值僅保留浮點數中小數點之前的部分。不會四捨五入。
- 把整數賦給浮點類型時,小數部分記為0。如果整數所佔空間超過浮點類型的容量,精度可能損失。
儘管我們不會故意給無符號的對象賦值一個負值,卻可能寫出這樣的代碼。例如,當一個算數運算式中既有無符號的數又有int值時,那個int 值就會轉換成無符號的數,把int轉換成無符號的過程和把int 直接賦值給無符號變數一樣。 例如unsigned u =10;int i= -42;std::cout<<i+i<<std::endl;std::cout<<u+i<<std::endl; int佔32位,輸出4294967264第一個運算式,兩個數相加得到了期望值;在第二個運算式,相加前,先把整數-42轉換成無符號的數。把負數轉換成無符號數相當於直接給無符號數賦值一個負值,結果等於這個負數加上無符號數的模。 逸出序列 分行符號 \n縱向定位字元 \v反斜線 \\斷行符號符 \r橫向定位字元 \t退格符 \b問號 \?進紙符 \f警示符 \a雙引號 \"單引號 \‘
2017.11.10 重讀C++ Primer