C Primer學習筆記 算術型別使用小結

2021-04-30 03:01:42 字數 1468 閱讀 8045

實際上,許多人用整型進行計數。例如:程式經常計算像 vector 或陣列這種資料結構的元素個數。在第三章 和第四章 中,我們將看到標準庫定義了一組型別用於統計物件的大小。因此,當計數這些元素時使用標準庫定義的型別總是正確的。其他情況下,使用 unsigned 型別 比較明智,可以避免值越界導致結果為負數的可能性。

當執行整型算術運算時,很少使用 short 型別。 大多數程式中,使用 short 型別可能會隱含賦值越界的錯誤。這個錯誤會產生什麼後果將取決於所使用的機器。比較典型的情況是值「截斷(wrap around)」以至於因越界而變成很大的負數。同樣的道理,雖然 char 型別是整型,但是 char 型別通常用來儲存字元而不用於計算。事實上,在某些應用中 char 型別被當作 signed 型別,在另外一些應用中則被當作 unsigned 型別,因此把 char 型別作為計算型別使用時容易出問題。

在大多數機器上,使用 int 型別進行整型計算不易出錯。 就技術上而言,int 型別用 16 位表示——這對大多數應用來說太小了。實際應用中,大多數通用機器都是使用和 long 型別一樣長的 32 位來表示 int 型別。整型運算時,用 32 位表示 int 型別和用 64 位表示 long 型別的機器會出現應該選擇 int 型別還是 long 型別的難題。在這些機器上,用 long 型別進行計算所付出的執行時 代價遠遠高於用 int 型別進行同樣計算的代價,所以選擇型別前要先了解程式的細節並且比較 long 型別與 int 型別的實際執行時效能代價。

決定使用哪種浮點型就容易多了:使用 double 型別基本上不會有錯。 在 float 型別中隱式的精度損失是不能忽視的,而 double 型別精度代價相對於 float 型別精度代價可以忽略。事實上,有些機器上,double 型別比 float 型別的計算要快得多。long double 型別提供的精度通常沒有必要,而且還需要承擔額外的執行代價。

type

型別meaning

含義minimum size

最小儲存空間

bool

boolean

nachar

character

8 bits

wchar_t

wide character

16 bits

short

short integer

16 bits

int

integer

16 bits

long

long integer

32 bits

float

single-precision floating-point

6 significant digits

double

double-precision floating-point

10 significant digits

long double

extended-precision floating-point

10 significant digits

C Primer 筆記 列舉型別

1.和類一樣,每個列舉型別定義了一種新的型別。列舉屬於字面值常量型別。2.c 包含兩種列舉 限定作用域的和不限定作用域的。c 11新標準引入了限定作用域的列舉型別。enum class struct myenum 限定作用域的列舉 enum class struct myenum1 限定作用域的列舉...

c Primer學習筆記 6 抽象容器型別

第六章 抽象容器型別 1 在這一章裡主要是通過介紹乙個文字查詢系統介紹了順序容器 vector list 和關聯容器 map set 的用法。這一章完全可以參考資料結構的書籍來學習。裡面的實現過程軍可以在資料結構書籍上看到,我們自己可以通過簡單的 c 語言來實現。個人感覺 這一章在以後的實用性上不是...

C Primer 學習筆記(二) 標準庫型別

一 命名空間的using指示與using宣告 1 using宣告 1 乙個using宣告一次只引入乙個命名空間成員。2 using宣告的作用域為 從using宣告點開始,直到包含該using宣告的作用域的末尾,名字都是可見的。類作用域中的using宣告侷限於被定義類的基類中定義的名字。using s...