C++ Primer Plus(三)——處理數據

面向對象編程OOP的本質是設計並擴展本身的數據類型。編程

內置的C++數據類型分爲兩組:基本類型和符合類型,其中基本類型僅僅包括整數與浮點數。數據結構

1. 要把信息存儲在計算機中,程序必須記錄3個基本屬性:信息存儲在哪,要存什麼值,存儲何種類型的信息編碼

2. C++命名規則:spa

         (1) 名稱中只能使用字母、下劃線、數字,且不能以數字開頭,不能使用關鍵字作名稱,區分大小寫。設計

         (2) 以兩個下劃線或下劃線和大寫字母打頭的名稱被保留給編譯器及其使用的資源使用,以一個下劃線打頭的名稱用做全局標識符。指針

         (3) C++對於名稱長度沒有限制,但某些平臺有長度限制。對象

         (4) 多個單詞組成組成一個名稱,一般的作法是使用下劃線將單詞隔開,或者從從第二個單詞開始將每一個單詞的首字母大寫。ci

         (5) 描述變量類型或內容的前綴:n表示整型,strsz表示以空字符結束的字符串,b表示布爾值,p表示指針,c表示單個字符。資源

3. 頭文件climits(或limits.h)定義了符號常量來表示類型限制的信息。作用域

符號常量

表示

CHAR_MIN

char的最小值

SCHAR_MAX

signed char 最大值

SCHAR_MIN

signed char 最小值

UCHAR_MAX

unsigned char 最大值

SHRT_MAX

short 最大值

SHRT_MIN

short 最小值

USHRT_MAX

unsigned   short 最大值

INT_MAX

int 最大值

INT_MIN

int 最小值

UINT_MAX

unsigned int 最大值

UINT_MIN

unsigned int 最小值

LONG_MAX

long最大值

LONG_MIN

long最小值

ULONG_MAX

unsigned long 最大值

FLT_MANT_DIG

float 類型的尾數

FLT_DIG

float 類型的最少有效數字位數

FLT_MIN_10_EXP

帶有所有有效數的float類型的負指數的最小值(以10爲底)

FLT_MAX_10_EXP

float類型的正指數的最大值(以10爲底)

FLT_MIN

保留所有精度的float類型正數最小值

FLT_MAX

float類型正數最大值

 

4. 對類型名使用sizeof運算符時,應將名稱放在括號中,但對變量名使用該運算符時,括號是可選的。

5. C++11的初始化方式:將大括號用於變量初始化,如int em={3};等號也能夠省略,如int em{3};大括號內能夠不包含任何東西,這將使用默認值,如int em{}int em{0}等價,這也有助於更好的防範類型轉換錯誤。

6. 整型字面值:

         (1) 若是第一位爲1-9,則爲十進制

         (2) 若是第一位爲0,第二位爲1-7,則爲八進制

         (3) 若是前兩位爲0x0X,則爲十六進制

cout默認格式爲十進制,如要顯示八進制和十六進制,則需使用cout<<hexcout<<oct

7. 如何肯定常量的類型:

         (1) 除非有理由存儲爲其餘類型,不然存儲爲int類型

         (2) 對於十進制不帶後綴的整數,將使用下面幾種類型中可以存儲該數的最小類型來表示:intlonglong long

         (3) 對於八進制、十六進制不帶後綴的整數,將使用如下幾種類型中可以存儲該數的最小類型來表示:intunsigned intlongunsigned longlong longunsigned long long

8. C++轉義序列編碼

字符名稱

ASCII符號

C++代碼

十進制ASCII

十六進制ASCII

換行符

NL(LF)

\n

10

0xA

水平製表符

HT

\t

9

0x9

垂直製表符

VT

\v

11

0xB

退格

BS

\b

8

0x8

回車

CR

\r

13

0xD

振鈴

BEL

\a

7

0x7

反斜槓

\

\\

92

0x5c

問號

?

\?

63

0x3F

單引號

\’

39

0x27

雙引號

\」

34

0x22

在能夠使用數字轉義序列和符號轉義序列時,應使用符號轉義序列(如\0x8\b),數字表示與特定的編碼方式有關,而符號表示能夠適用於任何編碼方式,可讀性也更強。

9. 通用字符名(universal character name)是表示特殊字符的一種機制,以\u\U打頭。\u後面是8個十六進制位,\U後面是16個十六進制位。這些位表示的是字符的ISO 10646碼點(字符的編號)。在源代碼中,可以使用適用於全部系統的通用編碼名,而編譯器根據當前系統使用合適的內部編碼來表示它。

10. char是否有符號由C++實現決定。若是說char有某種特定行爲對於開發者來講很是重要,能夠顯式的將類型設置爲signed charunsigned char

11. wchar_t(寬字符類型)用於表示擴展字符集。它是一種整數類型,這種類型與另外一種整型的長度和符號屬性相同,對於底層類型的選擇取決於實現。wcinwcout可用於處理wchar_t流。另外,可經過加上前綴L來指示寬字符常量和寬字符字符串。

12. C++11新增char16_tchar32_t,都無符號,前者長16位,使用前綴u表示常量,如u’c’,與\u00F6的通用字符名匹配,後者長32位,使用前綴U表示常量,如U’c’,與\U000022B的通用字符名匹配。它們的底層類型都是一種內置的整型,但底層類型可隨系統變化。

13. 使用const限定符來處理符號常量。若是在聲明常量時沒有提供值,則該常量的值是不肯定的,且沒法修改。可以使用:首字母大寫、整個名稱大寫、以字母k打頭提醒使用者這是一個常量。constdefine相較的好處是:類型明確、限定在做用域中、可用於更復雜的數據結構。

14. C++有三種浮點數類型:floatdoublelong double,其中float至少32位,通常爲32位,double至少48位,通常爲64位,long double 至少和double同樣多,通常爲8096128位,這三種類型的指數範圍至少-3737,可從頭文件cfloatfloat.h找到系統的限制。

15. 求模運算的兩個操做數必須是整型,若是其中一個是負數,則結果的符號知足(a/b)*b+a%b=a的運算規則。

16. 當多個運算符應用於同一個操做數時,應用C++優先級決定優先應用哪一個操做符。當兩個運算符優先級相同時,C++將看操做數的結合性。

17. C++11使用{ }進行初始化,即列表初始化,這種方法僅當目標變量可以正確存儲賦值給它的值時才能編譯經過。

18. 在計算表達式時,C++boolcharunsigned charsigned charshort類型自動轉換爲int類型,即整型提高。

19. 將不一樣類型進行算術運算時,將較小的類型轉換爲較大的類型。編譯器經過校驗表來肯定在算術表達式中的轉換:

         (1) 若是有一個操做數的類型是long double,則另外一個操做數轉換爲long double

         (2) 不然,若是有一個操做數的類型是double,則另外一個操做數轉換爲double

         (3) 不然,若是有一個操做數的類型是float,則另外一個操做數轉換爲float

         (4) 不然,說明操做數都是整型,進行整型提高。在這種狀況下,若是兩個操做數都是無符號或是有符號的,且其中一個操做數的級別比另外一個低,則自動轉換爲級別較高的類型。

若是一個操做數是有符號的,另外一個操做數是無符號的,且無符號操做數的級別比有符號操做數的級別高,則將有符號操做數轉換爲無符號操做數所屬類型。不然,若是有符號類型可表示無符號類型全部取值,則將無符號操做數轉換爲有符號操做數所屬類型。不然,將兩個操做數都轉換爲有符號類型的無符號版本。

20. C++11從新定義了關鍵字auto,使其可以根據初始值的類型判斷變量類型。

相關文章
相關標籤/搜索