1. 程式人生 > >C++入門基礎-常見的資料型別

C++入門基礎-常見的資料型別

上節課回顧

##基本框架:
#include<iostream>//標頭檔案,相當於我們要用的工具包
using namespace std;//名稱空間,指定工具包裡面的工具
int main(){     //主程式入口,必寫

    return 0;  //結束標誌,必須返回0
}

輸入輸出:

這裡寫圖片描述

基本資料型別

這裡寫圖片描述

整數型

關於整數型,上節課已經接觸到其中的int型別的基本使用格式。接下來將展示其一些功能,作用和使用範圍。
在計算機中,因為處理器對資料的處理方式和傳統數學不一樣。因此嚴格將各種資料進行區分。整數型,則意味著儘可以儲存整數,而不能儲存其他的資料型別。如果你輸入的是一個浮點數,則會把除了整數意外的所有小數丟失,只保留其整數部分,這在計算機中稱之為精度丟失


例如:

而在整數這個層面上,依據儲存空間的不一樣,分成三個部分:短整型,基本整型,以及長整型,這三部分的判斷依據就是他們的儲存空間,即各自擁有的位元組數,檢視位元組數的方式為:sizeof(基本資料型別)方法。
比如:
這裡寫圖片描述
那麼,位元組數代表什麼意思呢?就是指可以儲存的數的大小,位元組數越大,可儲存的數字就越大,這三部分可儲存的整數的範圍為:
這裡寫圖片描述
細心的同學可以發現,long long的取值範圍包含int,而int 的取值範圍又包含了short,那我們為什麼還要分成3個部分而不是直接用long long 呢?因為從位元組大小來看,long long 佔的記憶體空間比其他的型別都大,而記憶體過大也會影響程式的執行。因此區分使用這三個數值的範圍就是取值範圍,一般來說,都用int就可以滿足基本的使用,除了特殊情況特殊對待外。

浮點型

浮點型對應的是浮點數,即我們說的帶有小數點的數。比如:1.123,對於浮點數來說,有兩個基本資料型別,分別是單精度(float)和雙精度(double),在日常的使用中,一般使用double,特殊指示情況下,用float即可。他們的位元組數為:
這裡寫圖片描述
關於如何控制輸出小數電後幾位的問題,格式如下:

#include<iomanip>//在標頭檔案處插入該標頭檔案
...
cout <<fixed <<setprecisopn(要輸出的幾位數)<<要處理的資料;

字元型

關於字元型,這是個比較特殊的資料型別,因為字元型的本質其實就是整型。為什麼這麼說,這裡就要涉及到我們課堂上說到的ASCII碼,在計算機發展的早期,我們一般都用來處理數字,也就是資料計算。第一臺計算機被研發的初衷也正是為了計算導彈的執行軌跡。所以在計算機的早期,並沒有字元型一說。後來,到計算機開始發展起來的時候,我們需要用一些字母來表示我們要表達的資訊,但是計算機上只有數字表達,沒有字元表達。因此,字元型便應運而生,它在整型數字的基礎上進行了修改,通過早期的ASCII碼的方式,實現數字和字母的轉換。後來ASCII碼的發展跟不上計算機發展的過程之後,逐漸又在其基礎上進行了拓展,形成UNICODE碼,但目前,c++仍保留了ASCII碼的使用,因此我們只需要掌握ASCII,即常見標準字元和整型數字的相互轉換。ASCII碼如圖:
這裡寫圖片描述


圖中紅色方框圈的位置需要同學注意,是我們常用的一些字元的對照格式,請務必記住:
零48,大A65小97
大小相差32

關於使用,char型別和int型別可以實現相互轉化。即在ASCII範圍內,同一個十進位制數,如果是int型別的變數儲存,則表示為int型別,如果是char型別的變數儲存,則表示為字元。例如:
這裡寫圖片描述
而因為我們說char實際上也是int型別,所以我們也可以用字元進行加法運算:
這裡寫圖片描述
注意,32為大寫字母和小寫字母的數值差。因此我們可以通過大寫字母+32或者小寫字母-32的方式進行大小寫的轉換。

布林型

關於布林型,實際上就是“是與不是的問題”,它只有兩種表達方式,分別為true,表示真,false,表示假。而這兩者的區別也可以用整型來表達,具體為:
預設為false,非零為true,靈為false。
意思是,如果只定義一個布林變數,不初始化的話,會預設為false,當初始化的值為0時,為false,其他值都為true。

資料型別的轉換

資料型別的轉換是指,有時候我們輸入的資料是整型,但要求
輸出的是浮點型。比如我們的求平均數。那麼就要用到我們的資料型別轉換。它有兩種方式。

自動轉換

自動轉換意思為計算機自動為我們進行轉換,這裡和我們的資料型別的位元組數相關,當我們兩個不同型別的資料型別進行演算法運算或者賦值運算時,計算機會判斷哪個型別的資料型別的位元組數大,那麼最後的結果會自動轉化為該資料型別,比如:
這裡寫圖片描述
在這裡,當我們是int/double時,因為double型別的位元組數比int大,所以會把結果顯示為0.5;
而int/int時,因為兩者都為int,位元組數相等,所以輸出為int,即為0,此時出現精度丟失情況。
注意當整型和浮點型進行運算時,結果會預設為浮點型,就是為了避免出現精度丟失的情況。

強制轉換

強制轉換和自動轉換相反,是我們只需要輸出位元組數小的資料型別時,但計算機已經預設幫我們轉化為位元組數較大的資料型別了。此時就需要進行強制轉換。其格式如下:

要轉換成的資料型別(需要轉化的資料)
例如:int(a);

同樣以整型和浮點型來對比,例子為
這裡寫圖片描述