# 資料型態 Data type
# 整數 int
&& short
&& long
類型名 | 中文意義 | 位元組 (Byte) | 數值範圍 |
---|---|---|---|
int | 整數 | 4 | -231(-2147483648)~231-1(2147483647) |
short 或 short int | 短整數 | 2 | -32768 ~ 32767 |
long 或 long int | 長整數 | 4 | -231~ 231-1 |
unsigned | 無符號整數 | 4 | 0~ 232-1 |
unsigned short | 無符號短整數 | 2 | 0~ 65535 |
unsigned long | 無符號長整數 | 4 | 0~ 232-1 |
- 整數型:一個數不帶小數點,可帶正負號。如:
1
,12
,+123
,-1234
- 十六進制整數:前綴
0x
(x 大小寫均可)。如:0xFF
,0x10
,0x21
,-0XFF
,-0X10
,-0X21
- 八進制整數:前綴
0
。如:010
,021
,-010
,-021
十進制、十六進制、八進制,沒小數點,都是整數,都佔 4 個位元。
如: 16
, 0x10
, 020
在電腦中存的都是 16 這個數。
# 符點數 float
&& double
類型名 | 中文意義 | 位元組 (Byte) | 數值範圍 |
---|---|---|---|
float | 單精度符點數 | 4 | ±3.4×10-38 ~ ± 3.4×1038 |
double | 雙精度符點數 | 8 | ±1.8×10-308 ~ ±1.8×10308 |
- 雙精度數:數據帶小數點
- 小數形式:
1.0
,1.
,0.1
,.1
- 指數形式:
1.2E-2
表示 1.2×10-2,1.2e+2
表示 1.2×102,-1.2E2
表示 - 1.2×102
- 小數形式:
- 單精度數:帶小數點,加後綴
F
或f
,如12.5F
,1.25E-2F
,-12.5f
float 的有效位數至小數點後第 7 位,而 double 的有效位數至小數點後第 15 位
1
是整數型,佔 4 個位元; 1.
是雙精度浮點數,佔 8 個位元1/2
和 1.0/2
的運算結果不一樣
# 字元 char
使用:
將字母寫在一對單引號中表示字元
如:'A'
,'B'
,'C'
,'a'
,'b'
,'c'
,'0'
,'1'
,'2'
,'3'
,'#'
,'$'
,'%'
位元數:
- 每個字元佔一個位元,保存英文字符的
ASCII
碼值。 - 實際也是一個整數,可以參與整數能進行的運算,如
'a'+12
。
- 每個字元佔一個位元,保存英文字符的
注意:
'a'
和a
是不一樣的:'a'
是字元,表示a
本身;a
識別符,如變數,代表別的數據。
# 跳脫字元
用一個反斜槓 + 一個字母 (或數字) 表示,它也是 1 個字元。
跳脫字元 | 表示 | 跳脫字元 | 表示 |
---|---|---|---|
\n | 換行 | \r | 回車 |
\b | 退格 | \t | 水平 Tab |
\' | 單引號 | \" | 雙引號 |
\0 | 空字符字符串的结束符 | \f | 分頁 |
cout<<'\''; // 顯示單引號 | |
cout<<'\"'; // 顯示雙引號 | |
// 將 "Hello World" 顯示到兩行上 | |
// 方法 1 | |
cout<<"Hello"<<endl; | |
cout<<"World"<<endl; | |
// 方法 2 | |
cout<<"Hello"<<endl<<"World"<<endl; | |
// 方法 3 | |
cout<<"Hello \nWorld"; | |
/* | |
顯示 | |
1234 12 567 | |
12 143 12 | |
按列對齊 | |
*/ | |
// 方法 1,加入空格,需要自己數空格 | |
cout<<1234<<" "<<12<<" "<<567<<endl; | |
cout<<12<<" "<<143<<" "<<12<<endl; | |
// 方法 2,加入 \t,相當於每個間隔 8 位 | |
cout<<1234<<"\t"<<12<<"\t"<<567<<endl; | |
cout<<12<<"\t"<<143<<"\t"<<12<<endl; | |
cout<<"1-abcde\n#12345"<<endl; | |
/* 顯示内容: | |
1-abcde | |
#12345 | |
*/ | |
cout<<"2-abcde\r#12345"<<endl; | |
/* 顯示内容: | |
#12345 | |
備注:顯示到 \r 時回車到本行第一个字元,後續内容覆蓋顯示 | |
*/ | |
cout<<"3-abcde\t#12345"<<endl; | |
/* 顯示内容: | |
3-abcde #12345 | |
*/ | |
cout<<"4-abcde\f#12345"<<endl; | |
/* 螢幕顯示内容: | |
4-abcde#12345 | |
備注:打印機上到 \f 則會換頁 | |
*/ | |
cout<<"5-abcde\b#12345"<<endl; | |
/* 顯示内容: | |
5-abcd#12345 | |
備注:顯示到 \b 時退格到 接著覆蓋後面的內容 | |
*/ | |
cout<<"9-abcde\0#12345"<<endl; | |
/* 顯示内容: | |
9-abcde | |
備注:顯示到 \0 时,表示字符串已經結束,後續内容不再顯示 | |
*/ | |
cout<<"10-abcde\141#12345"<<endl; | |
/* 顯示内容: | |
10-abcdea#123456 | |
備注:顯示到 \141 表示一個八進位數,轉換為 10 進位為 97,顯示的是 a | |
*/ |
# 字串
是連續的多個字元
- 使用: 字串寫在一對雙引號之間,如:
"Hello World"
,"Zrn-code"
- 位元數: 字串占的位元數等於
字串長度+1
為什麼 + 1?
末尾加了一個結束符,用空字符'\0'
ASCII 碼第一個字符表示,數值上是0
。
空字符'\0'
,什麼也沒有,ASCII 碼值為0
;
空格' '
,佔一個字符位,不顯示圖案,ASCII 碼值為32
,兩者不同。
H | e | l | l | o | W | o | r | l | d | '\0' |
---|
# 布林 bool
表示 “真”,“假” 判斷的結果
- 使用: true,表示 "真";false,表示 "假"
- 儲存: true,存的是 1;false,存的是 0
- 非
0
數值,當布林值相當於true
- 數值
0
,當布林值相當於fasle
- 布林值存放的是數字,因此可以進行數學運算 (冷知識)
# 數據表示方法
常數是不能改變的量,變數是可以變的量
# 字面常數
字面量、直接常數:直接寫出的數據。(不建議使用)
2,3,4; | |
1.2,1.3; | |
"Hello world!"; | |
cout<<2020; |
# 符號常數 const
&& #define
運用符號常數,一旦確定表示哪個數值後,就不能更變。
# const
const <資料型態> <常數名稱> = <數據>; | |
const int N = 100; | |
const double pai = 3.1415926; | |
const char A = 'A'; | |
const int M = 100,K = 100; |
記得加分號
# #define
// 在 main 函數之前 | |
// 通常會寫在 #include 下方 | |
#define <常數名稱> <數據> | |
#define PI 3.14 | |
#define N 1e6 |
行末沒有分號,這不是 C++ 語句,稱為預處理
編譯前,電腦會先將所有 <常數> 全部都替換為 < 數據 >,然後再編譯。
# 變數
變數是用符號表示數據,他表示的數據是可以變的。
# 變數宣告
<資料型態> <變數名稱1> [,<變數名稱2>,<變數名稱3>...]; | |
int a; | |
double d1,d2; | |
char c1,c2,c3; |
# 變數初始化
在宣告時,就將其的值先行定義。
<資料型態> <變數名稱1> = <值1> [,<變數名稱2> = <值2>...]; | |
int a = 5; | |
double d1 = 2.06,d2 = 0.24; | |
char c1 = '+',c2 = '-',c3 = '%'; |
# 變數賦值
等號 =
稱為賦值運算符,其作用是將右邊的值傳遞到左邊
<變數名> = <值>; | |
const double PI = 3.14; // 宣告常數 PI 的值為 3.14 | |
double r ,area; // 宣告變數 r 跟 area | |
r = 5.0; // 將 r 賦值 | |
area = r * r * PI; // 計算完面積後將值傳回 area | |
cout<< area<<endl; // 顯示結果 |
# 使用注意點
- 先定義,再使用
- 只能定義一次,不能重複定義
- 先賦值,再參與計算
- 變數可以多次賦值,而常量是不能賦值的
- 變數的定義可以出現在使用前的任何地方,但建議在程序的開始定義變數
- 少用或不用字面常數
# 溫故知新
# 整數、字元
# 整數
- 整數常數
整數常數 | 意義 |
---|---|
12 | 整數 |
12L | 長整數 |
0x15 | 十六進制整數 |
015 | 八進位整數 |
12U | 無符號數 |
- 整數變數
int a,b; | |
int x=10,y=20; |
# 字元
- 字元常數
字元常數 | 意義 |
---|---|
'a' | 字母字元 |
'1' | 數字字元 |
'\t' | 跳脫字元 |
'\x41' | 跳脫字元,ASCII 碼值是十六進位 |
'\102' | 跳脫字元,ASCII 碼值是八進位 |
- 字元變數
char c,d; | |
char e = `A`,f = `\121`; |
# 內存的形式
整數 1 在内存中儲存的是其二進制的形式: 00000000 00000000 00000000 00000001
字元 '1'
在内存中儲存的是 1
這個字元的 ASCII 碼值,即 49
,其二進制形式是 0011 0001
,實際也是個整數,只占一個位元!
int x; | |
char c = 'A'; | |
x = c + 2; // 即 65 + 2 = 67 | |
c = 98; // 即 'b' | |
cout<<x<<" "<<c<<endl; |
- 整數和字元在內存中都有整數。
- 整數,存放數的二進制形式。
- 字元,存放其 ASCII 碼值。
- 輸出時
- 當整數看待,顯示數的十進制。
- 當字元看待,顯示的是 ASCII 值是這個數的字元 (該數 < 128)。
int a = 65; // 等同於 int a = 'A'; | |
cout<<a<<endl; //65 | |
cout<<(char)a<<endl; //A | |
char c ='a';// 等同於 char c = 97; | |
cout<<c<<endl; //a | |
cout<<int(c)<<endl; //97 |
# 字串
- 字串常數
"Zrn"
、"zhang"、"Hello world"
- 字串 "變數"
char name[40] ="zhang"; |
# 內存的形式
內存中, name
稱為字元陣列,最多可放 40 個位元大小的字元。
索引值 (index) | 0 | 1 | 2 | 3 | 4 | 5 | ... | 39 |
字元 | 'z' | 'h' | 'a' | 'n' | 'g' | '/0' | ... | |
內存中實際儲存的 ASCII | 122 | 104 | 97 | 110 | 103 | 0 | ... |
name
中的每一個字元可以通過 name[i]
下標表示, i=0,...,n-1
。n
是字串的長度,對 "zhang"
來說,n = 5
int i = 0,k; | |
name[i] = 'c'; | |
cout<<name[i]<<endl; // 顯示為 99 | |
k = name[i] - 'a' + 1; // 這裡的 'a' 等同於 97 | |
cout<<k<<endl; // 顯示為 3 |
# 跳脫字元
- 可顯示字元,可以在鍵盤上直接輸入
char c = 'A'; |
- 不可顯示字元,不能直接輸入
ASCII 碼值界在 0~32 之間的字元是控制符號,不能顯示在螢幕上
char d = '\n'; | |
cout<< "Zrn"<<d<<"hello"<<endl; | |
cout<< "Zrn\nhello\n"; |
C++ 中,單引號表示字元,雙引號表示字串,反斜槓表示跳脫
如果需要顯示他們,則單引號為\'
,雙引號\"
,反斜槓\\
表示八進制、十六進制
\
+ 三位數字 (0-7):八進制 ASCII,數值上小於 128,如\ddd
:\
+ddd
八進制 ASCII\x
+ 兩位數字 (0-9) 或字母 (A-F):十六進制 ASCII,如\xhh
:\x
+hh
十六進制 ASCII
\n
\12
\x0A
表示換行\41
\041
\x21
表示'!'
\60
\060
\x30
表示字元'0'
\101
\x41
表示'A'
\141
\x61
表示'a'
\7
\07
\007
\x7
表示響鈴
# 常見跳脫字元
跳脫字元 | 意義 | ASCII 十進制 | 跳脫字元 | 意義 | ASCII 十進制 |
---|---|---|---|---|---|
\0 | 空字符 | 0 | \r | 回車 | 13 |
\a | 響鈴 | 7 | " | 雙引號 | 34 |
\b | 退格 | 8 | ' | 單引號 | 39 |
\t | 水平制表 | 9 | \\ | 反斜槓 | 92 |
\n | 換行 | 10 | \ddd | 任意字元 | ddd 八進制 |
\v | 垂直制表 | 11 | \xhh | 任意字元 | hh 十六進制 |
\f | 換頁 | 12 |
回車:回到本行開頭
換行:換到下行開頭