變數宣告
1 | int a = 1; |
競程常見資料型態
- int
- 最常出現
- 以二進位方式儲存,占 4 個 Byte,32 個 bit
- 因此範圍為 $-2^{31}$ ~ $2^{31}-1$
- 超過會產生不可預期的結果
- long long
- 占 8 個 Byte
- 範圍為 $-2^{63}$ ~ $2^{63}-1$
- 運算速度較 int 稍慢
- 你絕對會因為忘記使用它而 WA
- char
- 儲存的是字元
- 字元以 ‘’ 括住
- char 與 int 的轉換請見 ASCII TABLE
- 可以使用 int() 得到一個字元的ASCII值
1
cout<<int('a')<<'\n';
- 可以使用 char() 得到一個ASCII的值對應的字元
1
cout<<char(97)<<'\n';
- double
- 儲存非整數時使用
- 不是精準值,存在誤差。原因
- long double
- 更精準的double
- 更慢的double
- string
- 儲存字串使用
- 字串以 “” 括住
- 也有人會使用 char[] 儲存字串,但 string 方便又好用
- char[] 與 string 在某些時候語法不同,這份教學都會用 string 的語法寫
- bool
- 僅表示1(true) 或 0(false)
- 一般用來表示一個東西的狀態(是否活著、是否用過…)
- 通常不會拿來輸入輸出
- 雖可用 int 替代,但會導致程式可讀性下降
注意事項
- 因誤差極大,請勿於競程中使用 float。
- 基本上不需使用到 short,需要整數直接用 int 就好
- 若宣告時未指派值,變數的值不一定是 0,可能是任何數。
指派
在程式語言的世界裡, = 這個符號有著不同的意思。
它代表著的,並非我們日常生活中的等於,而是指派。
因此,當我們寫:
1 | int a = 10; |
並非表示a等於10,而是表示:
1 | a,你從現在開始變成10囉! |
因此,以下的程式碼並不存在任何錯誤:
1 | int a = 10; |
我只是不斷的將新的值指派給a這個變數而已,沒有問題。
順帶一提,C++中,表示等於的符號是==,在之後的章節會有更進一步的介紹。
型態互轉
有些型態是可以互轉的,例如:
1 | long long x; |
他們都是數字,因此互轉沒有問題!但要注意的是,浮點數在轉換為整數時,小數點以下所有數字會被直接捨去!因此在上方程式碼執行完畢後,y與x的值都是123。
練習
- 因所有題目都需要輸入/輸出,因此習題合併於下一章節