C++關於變量數據類型的總結



編程在很大程度上都是在進行數據的處理,數據的處理方法有很多,各式各樣的算法、數據結構等。數據的類型也有很多,這裏就c++所涉及的基本數據進行一些總結。

把信息存儲於計算機,一般都是存儲在變量中,當然變量貫穿在整個程序中,通過變量的組合可以組成結構、類等,數據的傳遞也是通過變量進行的,所以說變量是數據的載體,不同的數據類型存儲在不同類型的變量中。

1.       變量命名

這裏就不多介紹,命名規則都是基礎的東西。主要說幾點常用的吧:

全局常量首字母大寫

類中數據變量後綴加“_”

2.       變量類型 整型

C++中總的有11種整型:short intlonglong longunsigned short unsigned intunsigned longunsigned long longcharunsigned charsigned char。下面進行總結。

 

首先8位(bit=1字節(byte

short:至少16                                                                       Windows中:2字節

int:大於等於short小於等於long                                      Windows中:4字節

long:至少32位大於等於int                                                Windows中:4字節

long long:至少64位,大於等於long                               Windows中:8字節

在默認情況下,以上整型都是爲有符號整型,4字節可以表示的範圍爲:-215—215-1,對於4字節無符號數範圍爲:0216

 

Short類型的變量適合存儲大型整數數組,節省內存,其他情況下默認爲int型。

對於常量的整型:一般用後綴來申明,除非數值太大超出int範圍,否則默認爲int

 

對於char類型,是另外一種整型,能表示計算機所有的基本符號,一般系統字符數≤128,所以用一個字符就可以表示,可以把char當作比short更小的整型,存儲的時候轉換爲字符對應的整數,輸出的時候轉換爲對應的字符進行輸出。

wchar_t類型,2字節,wcinwcout,進行輸入輸出,當然需要加前綴L。顯示一個字符可以用cout.put(‘!’)

Char默認既不是無符號型又不是有符號型,需要進行顯式的定義,無符號數0255,有符號數-128—127

C++11新增了新的類型:char16_tchar32_t,都是無符號整型用前綴uU表示

 

這裏簡單說一下bool型,布爾變量值爲truefalse,通過提升轉換可以變成10。任何數字值和指針值均可隱式的轉換爲布爾值,常用作while判斷表達式。

Const常量:一般首字母大寫,必須賦初值,否則導致不確定結果。

3.        浮點數

能表示帶小數部分的數值,當數值很大,無法用long進行表示,或者當數值很小時,用浮點數進行表示。有兩種表示法:標準小數點和科學計數法(e/E來表示)。指數範圍至少:-37—37

浮點數類型有:float>32位)、double>48位,通常爲64位)、longdouble8096128位)。對於float,系統一般保證6位有效數字,double,系統一般保證15位有效數字。

對於浮點常量,用f,F後綴表示float,一般默認爲double,用後綴L表示long double

4.        類型轉換

(1). 初始化和賦值時的轉換

從小類型轉換爲大類型,沒有問題,反之則會降低精度。

Long轉換爲short,如果值超出short的範圍,則只複製右邊的字節。

Float轉換爲int,小數部分丟失,如果超出int範圍,結果是不確定的。

(2). {}初始化列表的方式

這種轉換則更加嚴格,只有當目標變量能正確存儲賦給它的值時才能轉換,否則不能轉換。如float不能轉換爲intint則可能轉換爲float

(3). 表達式中的轉換

表達式中的轉換分爲自動轉換和不同類型出現時轉換。

自動轉換:出現時便轉換。整型提升轉換:shortcharunsigned charsigned charbool類型自動轉換爲int型。當short長度小於int時,unsigned short轉換爲int,當short長度等於int時,unsigned short轉換爲unsigned int。而wchar_t轉換爲第一個寬度足夠存儲wchar_t類型的整型。

 

不同類型出現時轉換:

long double,另一個轉換爲longdouble

否則有double,另一個轉換爲double

否則有float,另一個轉換爲float

否則都是整型,則整型提升。

 

有符號和無符號之間:

無符號級別高於有符號,則有符號轉換爲無符號

有符號可以包含無符號長度,則無符號數轉換爲有符號數

否則均轉換爲有符號類型的無符號版本。

(4). 函數或類中傳遞參數的轉換級別由高到低分別如下:

完全匹配,不用轉換

整體提升:附加float轉換爲double

標準轉換:int轉換爲charlong轉換爲double

用戶定義轉換:(類聲明實現)可用關鍵字explicit關閉隱式轉換

(5). 強制轉換

強制轉換不會修改變量本身。

4個強制轉換運算符

Dynamic_cast,基指針可以指向派生類對象,反之則賦空指針。

Const_cast 修改值的類型爲constvolatile,但其他類型必須完全相同

(對const的總結將寫在另一篇文章裏)

Static_cast兩個類型可以進行合法的隱式轉換時,纔可以用。

Reintrprect_cast

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章