天天看點

Lesson 2:基本資料類型

        在學習資料類型之前,需要了解一個基礎知識,計算機的記憶體由位(bit)組成,每一位都表示一個二進制數0或1。在存儲機關中,1GB = 2^10MB = 2^20KB = 2^30Byte = 2^33bit。         一、資料的分類、大小和初始化         1、字元型:char         2、布爾型:bool         3、整形:有short,int,long,long long四種         4、浮點型:float,double,long double三種        對于每種類型所占的位元組數是和作業系統的位數直接聯系的,不同位數的作業系統對應的位元組數是不同的。我是64位的作業系統,利用sizeof()函數,參數直接選擇資料的類型,輸出了所有資料類型所占的位元組數大小。

Lesson 2:基本資料類型

        4、取值範圍         如果該類型的資料占有n個位元組,那麼就有m個位,其中m = 4 x n:         對于有符号數(signed),最高位為符号位,1表示負數,0表示正數。取值範圍為 -2^(m-1) ~ 2^(m-1) - 1。         對于無符号數(unsigned),取值範圍為 0 ~ 2^m - 1。

        5、初始化         C語言初始化可以直接用“=”給變量指派,在C++中新增了用括号初始化,形式上有點像初始化清單,例如:

int num1(100);
int num2{200};
int num3{};
           

        如果花括号中沒有值,那麼預設初始化為0。         如果變量沒有初始化,那麼會CPU會給該變量配置設定一個随機值,範圍在該類型資料的取值範圍内。         如果取值超過了該資料類型的取值範圍,那麼就會傳回一個邊界值。

        二、#define和const         1、例如 #define MAX 10         和#include一樣,是一個預處理器編譯指令。該編譯指令告訴預處理器,在程式中來查找MAX,并且将所有的MAX都替換為10,修改後的程式将在這些變量的值替換後被編譯。         2、例如 const int MAX = 10         const限定符,一個const常量的值是不允許被修改的,聲明const變量時可以将變量名開頭字母大寫,或者将整體大寫,以表示這是一個常量。         總體來說,使用const限定符比使用#define指令要更好,一方面指出了資料的類型,另一方面是在作用域規則和複雜類型中有更多的好處,這個會在之後介紹。

        三、char 和bool         1、char字元其實也就是和ASC碼相對應,計算機隻能識别二進制數而不能識别符号。比如輸入一個字元 ’a‘,在通過cin輸入時,就被轉化為了65,計算機就是依次來存儲a,輸出時,通過cout識别該變量為char類型,那麼就将65轉化為a來輸出。同時字元之間也是可以比較大小,可以直接将字元當做對應的數字來用。         2、bool類型取值為true和false,也就是對應為1和0。這裡有一個容易想當然的地方,給一個bool變量用數字指派時,如果賦為0的話,則該變量為false,如果是非0的話,則該變量為true,而不是用是否小于0來區分。                 四、類型轉換         在類型轉換中有個原則就是:低一級數一定可以轉換為高一級數,而高一級數不一定能轉換成低一級數(有可能會造成精度丢失)。         轉換的方法有很多,比如用花括号來表示一個非該變量類型的值,在這裡我隻記一下強制轉換:         (typename) value         typename (value)         這兩句的意義一樣都是把value值轉換為typename類型。

        另外,C語言中有一個關鍵字auto,用于定義一個變量,而用auto來替代該變量的變量類型,那麼編譯器會根據初始值的類型來推斷變量的類型。但是,這種做法會導緻誤會,例如如果想申明一個double變量,然而初始值是0的話,那麼會編譯器會将其自動識别為int整型,而不是double,需要初始為0.0才是正确的做法。

繼續閱讀