開啟章節選單
基本資料型態
極為常見什麼是資料型態
在前面的章節,變數裡面只有存放數字,那是因為前面定義變數的方法如下:
int score = 100;
而更仔細的說,定義變數的語法其實是長這樣:
資料型態 名稱 = 初始值;
那資料型態是指什麼呢?
資料型態是指變數裡面要儲存的資料是什麼 "類型" 的,比如 100、0、655 都屬於 "整數",所以要使用 "int" 這個型態來定義變數,而 "int" 其實就是 "integer"(整數)的簡寫。
常見基本資料型態
整數
int
int
可以用來儲存整數,不過實際上 int
不能儲存所有的整數,只能儲存 -2147483648
到 2147483647
之間的整數,如果超過這個範圍,就會發生 overflow
(溢位)的問題,導致數值錯誤。
int
在不同的作業系統上可能會有不同的大小,但是通常都是 4 個位元組。
overflow
是指一個變數的值超過了它所能儲存的範圍,導致數值錯誤,之後會有專門的章節來介紹。
通常不用仔細的去記住 int
的範圍,只要知道它的範圍大約在 左右就可以了。
int age = 18;
long long
儲存整數,但是跟 int
的差別就是它可以儲存更大的整數,具體的範圍是 -9223372036854775808
到 9223372036854775807
,如果超過這個範圍,也會發生 overflow
的問題。
long long
在不同的作業系統上可能會有不同的大小,但是通常都是 8 個位元組。
通常不用仔細的去記住 long long
的範圍,只要知道它的範圍大約在 左右就可以了。
long long big_num = 10000000000;
unsigned int
unsigned int
也是用來儲存整數的,不過它只能儲存非負整數,也就是說它不能儲存負數,但是它的範圍比 int
大,可以儲存 0
到 4294967295
之間的整數。
unsigned int
之所以可以多存一位且不能存負數的原因是,原本用來儲存正負號的位元被拿去多存一個位數。
unsigned int count = 100;
short
short
也是用來儲存整數的,不過它的範圍比 int
小,只能儲存 -32768
到 32767
之間的整數。
short num = 10;
unsigned short
unsigned short
也是用來儲存整數的,不過它只能儲存非負整數,也就是說它不能儲存負數,但是它的範圍比 short
大,可以儲存 0
到 65535
之間的整數。
unsigned short num = 10;
unsigned long long
unsigned long long
也是用來儲存整數的,不過它只能儲存非負整數,也就是說它不能儲存負數,但是它的範圍比 long long
大,可以儲存 0
到 18446744073709551615
之間的整數。
unsigned long long num = 10000000000;
字元與字串
char
char
其實就是 "character"(字元)的簡寫,它可以儲存單一個字元,比如 'a'、'b'、'c' 等等,在語法上要用單引號 '
包住來表示。
char
在記憶體中其實是一個整數(ASCII 編碼),只是在輸出時會轉換成對應的字元。
char ch = 'a';
string
string
是一個 "字串" 的資料型態,可以用來儲存一串文字,比如 "Hello"、"C++" 等等。這邊只是簡單介紹,在之後的章節會有專門的章節來介紹 string
的更多用法。
string name = "Alice";
浮點數
float
float
也是用來儲存數字的,不過它儲存的是浮點數(也就是有小數點的數字),但一般來說都強烈建議不要在 APCS 檢定中使用 float
,而是使用接下來要介紹的 double
代替,因為 float
的精度非常低,一不小心就很容易出錯。
float pi = 3.14;
double
double
也是用來儲存浮點數的資料型態,不過跟 float
的差別就是 double
的精度更高,但即便如此還是多少會有誤差,因此不建議濫用 double
, 如果有可以避免使用 double
的方法則盡量不要使用 double
。關於浮點數運算及精度問題,我們會在之後的章節詳細介紹。
double pi = 3.14159265;
long double
long double
是用來儲存浮點數的資料型態,跟 double
的差別就是 long double
的精度更高,有時候如果覺得程式沒錯但是答案卻不對,可以試著用 long double
替換 double
來儲存浮點數試試看。但也請不要濫用,畢竟精度愈高,記憶體和運算時間也會愈高。
long double pi = 3.14159265358979;
其他
bool
bool
是用來儲存「布林值」的資料型態,只有兩個值:true
和 false
,通常用來表示一個敘述的「成立」或「不成立」。
bool isPass = true; bool isFail = false;
如果嘗試把一個布林值 cout
出來,你會發現 true
會被輸出成 1,而 false
會被輸出成 0,這是因為 bool
在記憶體中其實是一個整數,true
代表 1,false
代表 0。
小測驗
下列哪個敘述是錯誤的?