# 【1-1】變數宣告 在數學中,我們會「假設未知數」來表示一個值;在程式裡,我們使用「變數」來儲存資料,而這個動作被稱為**變數宣告**。 例如: * `642` 是一個整數 * `102.36` 是一個小數 * `'d'` 是一個字元 * `"apple"` 是一個字串 這些看起來都很直覺,事實上 Python 就能做到這件事情,因為 **Python 是動態型別語言**,它會自動判斷資料的型別,不需要指定類型,直接寫變數名稱與值即可。 但要注意:**C++ 是強型別語言**,它不會自動判斷你想要的資料類型,所以我們在使用變數前,一定要**明確宣告它的類型**。 ## 常見的變數類型 | 名稱 | 類型說明 | 數值範圍或內容 | | ----------- | -------- | --------------------------- | | `int` | 整數 | 約 -2³¹ \~ 2³¹-1 | | `long long` | 長整數 | 約 -2⁶³ \~ 2⁶³-1 | | `float` | 單精度小數 | 精確到小數點後約 7 位 | | `double` | 雙精度小數 | 精確到小數點後約 15 位 | | `char` | 字元 | 儲存單一字元(如 `'a'`) | | `string` | 字串 | 儲存多個字元(如 `"hello"`) | | `bool` | 布林值 | 只有兩種狀態:`true`(1)、`false`(0) | 其中,布林值應該是比較陌生的一種類型,讓我們來舉個例子: * 5 大於 3 * 藍色是一種顏色 * 地板是濕的,所以剛才一定有下雨 顯然前兩個是正確的,最後一個錯誤,也許是剛才有人在澆花、洗車,把地板弄濕了。 而這種是非題,我們就把正確用 `true`(1)表示,錯誤用 `false`(0)表示。 程式在執行的過程中,遇到布林值,會先停下來判斷一下,如果是 `true` 才繼續執行,否則就跳過這個區塊。 ## 變數的宣告方式 格式主要是: ``` 變數類型 變數名稱 = 給定數值; ``` 其中,數值不見得要一開始就設定好。例如: ```cpp int x = 10; ``` 代表宣告了一個整數,叫做 x,數值為 10。 ```cpp float y; ``` 代表宣告了一個單精度小數,叫做 y。 以下是變數宣告的完整的示範: ```cpp=1 #include <bits/stdc++.h> using namespace std; int main() { // 整數 int myInt = 42; // 長整數 long long myLongLong = 123456789012345; // 單精度小數 float myFloat = 3.14; // 雙精度小數 double myDouble = 2.718281828459045; // 字元 char myChar = 'Z'; // 字串 string myString = "Learning C++"; // 布林值 bool myBool = false; return 0; } ``` ### Python對照 ```python= # 整數/長整數 myInt = 42 myLongLong = 123456789012345 # 單精度/雙精度小數 myFloat = 3.14 myDouble = 2.718281828459045 # 字元 myChar = 'Z' # 字串 myString = "Learning C++" # 布林值 myBool = False ``` ## 想一想 在 C++ 中,如果變數超出該類型的範圍會發生什麼事呢?(例如 int a = 9999999999999999,這樣子輸出 a 會得到什麼呢?) <details> <summary>解答</summary> 當變數超出其範圍時,會發生溢出(overflow)。這種情況下,變數會回繞至該型別的最小值或最大值附近,導致結果不正確。具體的行為取決於平台和編譯器,但通常遵循以下模式: * 正溢出:以 `int` 舉例,當一個數值超過 `int` 的最大值時,它會回繞到最小值。`int` 最大值是 2,147,483,647,若將其增加 1,如下方: ```cpp=1 #include <bits/stdc++.h> using namespace std; int main() { int maxInt = 2147483647; // int 的最大值 cout << "Before overflow: " << maxInt << endl; maxInt++; cout << "After overflow: " << maxInt << endl; return 0; } ``` ### 輸出結果 ``` Before overflow: 2147483647 After overflow: -2147483648 ``` * 負溢出:以 `int` 舉例,當一個數值低於 `int` 的最小值時,它會回繞到最大值。`int` 最小值是 -2,147,483,648,若將其減少 1,如下方: ```cpp=1 #include <bits/stdc++.h> using namespace std; int main() { int minInt = -2147483648; // int 的最小值 cout << "Before overflow: " << minInt << endl; minInt--; cout << "After overflow: " << minInt << endl; return 0; } ``` ### 輸出結果 ``` Before overflow: -2147483648 After overflow: 2147483647 ``` </details> --- 聯絡方式:codecodefunny@gmail.com 最後編修時間:2025/06/22 子柚筆