本文主要講解了c++的內建資料型別、內建資料型別的字面值、列舉型別和聯合型別,位操作符。
一、資料型別
1.c++的基本內建資料型別有char、wchar_t、int、short、long、long long、float、double、bool、long double,其中,int、short、long、long long又分為signed和unsigned。
對於基本內建資料型別需要掌握的要點為兩點:
(1) 這些資料型別在記憶體中所佔的大小,經過測試,我發現在不同的作業系統中,內建資料型別所佔的空間大小是不一樣的,就windows系統來說,
char 1位元組
wchar_t 2位元組
short 2位元組
int 4位元組
long 4位元組
long long 8位元組
float 4位元組
double 8位元組
long double 8位元組
bool 1位元組
掌握資料型別在記憶體中所佔的大小對於在記憶體中直接用指標訪問變數特別有用。
(2) 基本內建資料型別的初始化
a.宣告為全域性變數,預設初始化為0
b.宣告為區域性變數,在使用變數前必須初始化,無缺省初始化
c. int i(1024); 直接初始化
int i = 1024; 複製初始化
這兩種初始化在內建資料型別的初始化時,差別不大,但是在型別類的初始化時,這個差別會凸現出來,直接初始化呼叫類的建構函式,複製初始化呼叫類的複製建構函式。
2. 字面值常量
像42,45.2,false,「i am liu」這樣的值被稱為字面值常量。
在這裡需要重點掌握的時字串字面值。
a. "test" = 't' ,'e','s','t','\0'
b.字串字面值的連線:
cout<<"a multi-line "
"string literal "
"using concatenation"
《等同於
cout << " a mult-line ""string literal ""using concatenation"《等同於
cout <<" a mult-line " "string literal " "using concatenation"《輸出結果: a multi-line string literal using concatenation
而連線字串字面值和寬字串字面值的結果不確定,可能引起系統崩潰,也可能編譯的時候不能通過。我在vs2005下測試了一下,編譯不能通過。
cout <<"i am "l"teacher"string s1="hello";//ok
string s2 = s1+"world";//ok
string s3 = "hello"+"world";//error
string s4 = "world"+s1;//error 這種情況在c++ primer這本書中是錯誤,但我在實際使用時,在vs2005中,這種表示式是正確的,比較奇怪,或許在linux下這樣使用不行。
3. 列舉變數
a.列舉變數的定義:
也可也可
注意:列舉型別中值得預設初始化不管是定義在全域性還是定義在區域性,都會自動初始化。
列舉變數部不安時全域性變數還是區域性變數,都會預設自動初始化為0。
b.列舉變數的賦值
open_modes state=open;//ok
state=4;//error
open_modes state1 = state;//ok
只能用列舉變數或列舉成員對列舉變數賦值。
4.類型別
特殊的類型別:union 聯合
可以有多個類資料成員,但是只允許其中某乙個雷資料成員有值,節省了記憶體空基納。
a.定義:
union takevalue//若無takevalue名字,則是匿名聯合
char cval;
int ival;
double dval;
b.資料成員不能為引用型別、類型別、靜態型別。
c.聯合可巢狀
d.聯合的使用:
takevalue ptr;
ptr.ival=0;
takevalue* pointer = &ptr;
ptr->dval = 5.0;
二、位操作符
1.>>和<<
《操作符,右邊插入0補位
>>操作符,左邊插入0或1補位,如果是無符號數,插入0補位,如果是有符號數,插入符號位的副本或0值補位。
2.^按位異或
如果兩個運算元的相同位上的數相同則為1,不同則為0。
1 C 變數和操作符
基本型別 9種 布林型 bool 字元型 char 寬字元型 wchar t 短整型 short 整型 int 長整型 long 單精度浮點型 float 雙精度浮點型 double 長雙精度浮點型 long double 布林型 布林型 bool true false 字元型 轉義字元 字元型 c...
1 C 資料型別(tcy)
資料型別 2019 1 31 1.資料型別 1 預定義型別 bool,char,byte1,short2,int4,long8,long long整型 64 float4,double8,指標型,void無值型 用於指標,函式 2 型別修飾符 signed,unsigned,short,long用於...
c 中型別轉換操作符
在c語言中,型別轉換只需要在變數前加上轉換的型別即可,而且轉換可以是雙向的,但是這種粗暴的型別對付基本型別還可以,對付複雜型別就力不從心了。因此c 提供了四種型別轉換操作符 static cast dynamic cast const cast reinterpret 1 static cast s...