---
# System prepended metadata

title: 【1-1】變數宣告

---

# 【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 子柚筆
