C++/變數及資料型態
外觀
< C++
變數,可以想像成是一個箱子,在裏面放一個數字,而我們隨時可以將這個數字拿出來使用或做修改。
簡介
[編輯]變數可以儲存數字、字元、布林值等等數值,但對於電腦來說,這些都是數字,因為電腦只用0與1在工作,而要把數字可以轉換成0與1是很容易的:
十進位
位值 |
100 | 10 | 1 |
102 | 101 | 100 | |
二進位
位值 |
4 | 2 | 1 |
22 | 21 | 20 |
將其轉換成較好理解的方式就是:十進位的數字是若干的硬幣,將其填入格子中,同一直排必須完全填滿或完全不填,如下表所示。
O | X
X X X X X |
X
X X X X X X X X |
X
X X X X X X X X X X |
O | |||
O | |||
O | |||
O | O | ||
O | O | ||
O | O | ||
O | O | ||
1 | 1 | 0 | 0 |
所以1210=11002。
既然數字可以轉換成電流的開關儲存,那就只要把其他東西轉換成數字較好了,最簡單的像是:布林值可以轉換成0和1;字元可以用編號的方式,例如'+'是2316。
使用
[編輯]建立
[編輯]int i;
那麼多種的資料型態都可以儲存,所以在宣告一個變數時需要告訴電腦它儲存的是什麼,這是這個語言的設定。所以當然也有一些語言是不用告訴電腦「資料型態(又稱資料型別)」的,例如JavaScript:
var i;
你會發現,var
是「變數」的縮寫,那麼int
又是什麼(不是感嘆詞)?底下將會介紹大部分資料型別,以及一些「修飾子(又稱修飾詞)」。
型別 | 中文 | 備註 | 大小 | 基本? |
---|---|---|---|---|
int
|
整數 | -2147483648 ~ +2147483647
|
4 | O |
short 或 short int
|
短整數 | -32768 ~ +32767 ,修飾詞(因為在int 前加東西)
|
2 | X |
long 或 long int
|
長整數 | 通常與整數相同,看系統,修飾詞(原因同上) | 4 或 8 | X |
char
|
字元 | -128 ~ +127 (ASCII字元)
|
1 | O |
bool
|
布林值 | true (非零值) & false (零)
|
1 | O |
float
|
單精度浮點數 | 約±1038 ~ ±10-38 ,誤差較大,建議用double
|
4 | O |
double
|
倍精度浮點數 | 約±10308 ~ ±10-308 ,浮點數一般用它
|
8 | O |
double double
|
倍倍精度浮點數 | 不常用又占記憶體空間 | ??? | X |
string
|
字串 | <cstring> 中額外定義
|
??? | X |
......更多 | 無 | 例如<windows.h> 中額外定義的
|
??? | X |
詞 | 中文 | 備註 |
---|---|---|
const
|
常數 | 宣告時必須給予初始值,不能更改其儲存之數值,可用以儲存如圓周率等常數 |
auto
|
自動 | 只能用於{} 內,無指定時預設,進入區塊內才會被建立,離開區塊才會釋放空間
|
static
|
靜態 | 要等所有程式執行結束才會釋放空間,沒設初始值預設0 |
extern
|
外部 | 沒設初始值預設0,全域變數,在區塊外使用可以省略,函數內部宣告不會實際分配記憶體,外面要有一個同名變數的宣告 |
static extern
|
靜態外部 | 靜態加上外部,但僅限於同意檔案使用 |
register
|
暫存器 | 用CPU的暫存器儲存,讀寫較快,對於頻繁存取的變數是較好的選擇,但因為暫存器空間有限,當其超過上限,系統會自動將它換成一般變數 |
初始值
[編輯]在宣告變數時是可以指派初始值的,如下所示。
int i = 0;
讀取
[編輯]在讀取時非常簡單,只要打上變數名稱。
int i = 0;
std::cout << i << std::endl;
// 輸出:0
寫入
[編輯]指派運算又稱為賦值運算。C++大概有以下幾種運算子可用。
注意其全部皆是由右至左運算,且左邊必須是一變數。
運算子 | 名稱 | 功能 | 範例 | i
|
---|---|---|---|---|
int i = 100;
|
100 | |||
= | 指派運算子 | 將右邊運算後給予左邊 | i = 5 + 3;
|
8 |
+= | 以和指派運算子 | 將右邊運算後加上左邊 | i += 5 + 3;
|
16 |
-= | 以差指派運算子 | 將右邊運算後減去左邊 | i -= 5 + 3;
|
-8 |
*= | 以積指派運算子 | 將右邊運算後乘以左邊 | i *= 5 + 3;
|
-64 |
/= | 以商指派運算子 | 將右邊運算後除以左邊 | i /= 5 + 3;
|
-0.125 |
%= | 以餘指派運算子 | 將右邊運算後除以左邊取餘數 | i %= 5 + 3;
|