0%

0-1 變數的宣告

教學文章

變數宣告

1
2
3
4
5
int a = 1;
long long b = 2;
char c = 'a';
double d = 2.564;
string e = "ABC";

競程常見資料型態

  1. int
    • 最常出現
    • 以二進位方式儲存,占 4 個 Byte,32 個 bit
    • 因此範圍為 $-2^{31}$ ~ $2^{31}-1$
    • 超過會產生不可預期的結果
  2. long long
    • 占 8 個 Byte
    • 範圍為 $-2^{63}$ ~ $2^{63}-1$
    • 運算速度較 int 稍慢
    • 你絕對會因為忘記使用它而 WA
  3. char
    • 儲存的是字元
    • 字元以 ‘’ 括住
    • char 與 int 的轉換請見 ASCII TABLE
    • 可以使用 int() 得到一個字元的ASCII值
      1
      cout<<int('a')<<'\n';
    • 可以使用 char() 得到一個ASCII的值對應的字元
      1
      cout<<char(97)<<'\n';
  4. double
    • 儲存非整數時使用
    • 不是精準值,存在誤差。原因
  5. long double
    • 更精準的double
    • 更慢的double
  6. string
    • 儲存字串使用
    • 字串以 “” 括住
    • 也有人會使用 char[] 儲存字串,但 string 方便又好用
    • char[] 與 string 在某些時候語法不同,這份教學都會用 string 的語法寫
  7. bool
    • 僅表示1(true) 或 0(false)
    • 一般用來表示一個東西的狀態(是否活著、是否用過…)
    • 通常不會拿來輸入輸出
    • 雖可用 int 替代,但會導致程式可讀性下降

注意事項

  • 因誤差極大,請勿於競程中使用 float。
  • 基本上不需使用到 short,需要整數直接用 int 就好
  • 若宣告時未指派值,變數的值不一定是 0,可能是任何數。

指派

在程式語言的世界裡, = 這個符號有著不同的意思。

它代表著的,並非我們日常生活中的等於,而是指派

因此,當我們寫:

1
int a = 10;

並非表示a等於10,而是表示:

1
a,你從現在開始變成10囉!

因此,以下的程式碼並不存在任何錯誤:

1
2
3
int a = 10;
a = 456;
a = 731;

我只是不斷的將新的值指派給a這個變數而已,沒有問題。

順帶一提,C++中,表示等於的符號是==,在之後的章節會有更進一步的介紹。

型態互轉

有些型態是可以互轉的,例如:

1
2
3
4
5
6
long long x;
int y;
double z;
z = 123.45
y = z;
x = y;

他們都是數字,因此互轉沒有問題!但要注意的是,浮點數在轉換為整數時,小數點以下所有數字會被直接捨去!因此在上方程式碼執行完畢後,y與x的值都是123。

練習

  • 因所有題目都需要輸入/輸出,因此習題合併於下一章節