C++/變數及資料型態

< C++

變數,可以想像成是一個箱子,在裏面放一個數字,而我們隨時可以將這個數字拿出來使用或做修改。

簡介

編輯

變數可以儲存數字、字元、布林值等等數值,但對於電腦來說,這些都是數字,因為電腦只用0與1在工作,而要把數字可以轉換成0與1是很容易的:

十進位

位值

100 10 1
102 101 100
二進位

位值

4 2 1
22 21 20

將其轉換成較好理解的方式就是:十進位的數字是若干的硬幣,將其填入格子中,同一直排必須完全填滿或完全不填,如下表所示。

12個銅板
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
shortshort int 短整數 -32768 ~ +32767,修飾詞(因為在int前加東西) 2 X
longlong int 長整數 通常與整數相同,看系統,修飾詞(原因同上) 4 或 8 X
char 字元 -128 ~ +127ASCII字元) 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;