參考課本 page ???-???
兩大類, 基本型態包括
六種,使用者自定的型態是指以 enum, struct, union 所定義之型態, 以下僅就第一類進行簡單的介紹, 第一類中的整數型態及字元型態尚可配合 unsigned 用來存放非負整數資料。
使用單一位元組 (八個位元), 可以存放一個 ASCII 編碼的字元, 或是以二進位存放一個 0 - 255 之間的整數, 或是以二的補數法存放一個 -128 - 127 之間的整數。
使用雙位元組, 可以用二進位存放一個 0 - 65535 (216-1) 之間的整數, 或是以二的補數法存放一個 -32768 - 32767 之間的整數。
使用四個位元組, 可以用二進位存放一個 0 - 232-1 之間的整數, 或是以二的補數法存放一個 -231 - 231-1 之間的整數。
使用四個位元組, 可存放以 IEEE 754 格式 sign, mantissa, exponent 方法表示之浮點數, 範圍約在 ±1038 至 ±10-38 之間, 其 roundoff 誤差與數值大小有關, 誤差與數值之比約為 10-7。
使用八個位元組, 可存放以 IEEE 754 格式 sign, mantissa, exponent 方法表示之浮點數, 範圍約在 ±10308 至 ±10-308 之間, 其 roundoff 誤差與數值大小有關, 誤差與數值之比約為 10-16。
第 8 位數以後就不正確了,是不是?
可以用另外一個角度來想, 4 個位元組總共 32 個位元, 可以有 232 (大約是 109) 種組合, 假設每一種組合代表一個 1038 ~ -1038 中的一個數字的話, 顯然無法表示其中每一個數字, 甚至連每一個整數都不可能, 因此在這範圍內只能挑一些代表的數值如下圖:
兩端間隔很大,反正數值已經那麼大了, 多錯一點也是應該的, 間隔與數值的比例維持在大約 10-8, 所能表示的數字絕對值最小約 10-38, 若是 double 型態的話, 間隔與數值的比例維持在大約 10-16, 所能表示的數字絕對值最小約 10-308。