型別主要是用來告訴我們資料代表什麼意思,對資料該執行什麼操作。
1.1 基本資料型別
c++中有布林型、字元型、整型、浮點型等。(其中整數、字元和布林的算術型別合稱為整型).它與在計算機儲存器中的表示方式緊密相關。計算機以位序列儲存資料,每位儲存0或1.通常在計算機中int儲存長度為1個機器字長。
1 #include 2using
namespace
std;
3int
main()
4
其在計算機中儲存的長度為:11
2444
1.2 越界處理
當我們給指定型別賦值,但是超過了指定型別的長度,那麼編譯器就會對其的可能取值數目求模,然後取得所求值。
例如:
1 #include 2 #include 3using
namespace
std;
4int
main()
5
對於第6行,根據char的模的值為256,若把資料型別改為signed,輸出結果相同,為:
9744
但是倘若我們的cr的值在第8行若為賦值,那麼結果就會有所不同了。如當cr的值為-1時:
對於signed char其值的表示範圍為-128-127,那麼輸出結果為:
97-1
對於unsigned char其值的表示範圍為0-255,那麼輸出結果為:
97255
1.3 型別檢查
c++是一種靜態型別語言,在編譯時會做型別檢查。在操作時,資料型別以及表示式是否合法是通過編譯器檢查的,如果不合法,那麼編譯器就會提示錯誤,而不會產生可執行檔案。所以,在我們使用變數的時候必須首先確定變數的型別。
1.4 初始化
對於變數定義,我們要確定他的型別和識別符號(可以是字母、數字、下劃線),當然還可以給物件提供乙個初始值。初始化變數有兩種方式:
直接初始化 int i(0);
複製初始化 int i=0;
1string all_nines=(3,'
9');//
直接初始化,裡面通過乙個計數器和乙個『9』字元初始化物件。 與第二行的表示式等價。
2string all_nines="
999";//
複製初始化
3 cout<
在以往中經常使用例如int i=0;但是要搞清楚,初始化不是賦值,賦值是擦除物件的當前值,然後再給他賦予新值。直接初始化的語法更靈活且效率更高。對於內建型別的來說,直接初始化與複製初始化幾乎沒有什麼差別。對於類型別有些初始化只能用直接初始化。
1.5 變數的宣告和定義
變數的定義:用於為變數分配儲存空間,還可以為其指定初始值。
變數的宣告:只是用來向程式表明變數的型別和名字。可以使用extern關鍵字宣告變數名而不定義它,也就是說extern並沒有在記憶體裡開闢空間,只有當extern位於函式外才可以包含初始化式。例如可定義為:extern int i=1;
程式中可以多次宣告,但是只能定義一次。
1extern
int i;//
申明但是並不定義
2int i;//
申明
在多個檔案中使用的變數都需要與定義分離的宣告。在這種情況下,乙個檔案含有變數的定義,使用該變數的其他檔案則包含該變數的宣告(而不是定義)。
1.6 引用
非const引用只能繫結到與該引用相同的型別。
const引用可以繫結到不同但相關的型別的物件或繫結到右值。
1int ival1=2; //
引用就是別名
2double dval=2.3;3
int &ival2=ival1;
4const
int x=2; //
const是指向const物件的引用
5const
int &x1=x;
6const
int &x2=x1+ival1; 7//
int &val=dval; 非const物件只能引用到同型別
8const
int &val=dval;
9 cout10 cout<
1.7 typedef名字
typedef可出現在程式的任何位置,其本身並沒有引入新的型別,只是現有資料型別的別名。
目的:隱藏特定型別的實現,強調使用目的。
簡化複雜型別定義,便於理解。
允許一種型別用於多個目的,同時使得每次使用該型別的目的更明確。
變數和基本型別
算術型別 arithmetic type c 標準規定了每個算術型別的最小儲存空間,但允許編譯器使用更大的儲存空間。事實上,對於int型,幾乎現在所有的編譯器使用的儲存空間都比所要求的大 也表明,在編寫程式時不能對這些型別的大小做任何假設 c 算術型別最小儲存空間規定如下 注 要特別注意int型,並...
變數和基本型別
c 程式通常由許多檔案組成,為了讓多個檔案訪問相同的變數,c 區分了宣告和定義。變數的定義 definition 用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。c 支援兩種初始化變數的形式 複製初始化 copy initialization 和直接初始化 dir...
變數和基本型別
一 資料型別 c 主要有bool,char,short,int,long,long long float,double,long double,wchar t 寬字元 char16 t char32 t unicode字元 每個型別對應不同的位元組尺寸,以上型別都是有符號的,加上關鍵字unsigne...