---
# System prepended metadata

title: C++_溢位

---

# C++_溢位(Overflow)
## 儲存上限
在C++中，變數像容器一樣有**儲存上限**
>[!Tip]POV:
>當你在容器裡裝超過儲存上限的WATER時，WATER就會滿出來
同理，當變數儲存的內容高過它可承受的儲存上限時
就會造成**溢位(Overflow)**
:::danger
造成溢位時，不同於容器只是滿出來的部分不見
變數溢位通常不會恰好卡在上限
只會多出更多令你頭腦旋轉的問題
:::
### 試試看
了解溢位，你可以用$50000$ * $50000$看看

## 各類型變數的儲存範圍
### int的儲存範圍:
* -2147483648 到 2147483647
* $-2^{31}$到$2^{31}-1$
* 在正常情況下大約可儲存$2^{32}/2$個數值(除以 2 是因為要分另一半儲存負整數的關係
你可以使用`sizeof()`
## 深入探討原因
到進階一點的地方就會知道這是`byte(位元組)`在搞鬼，
不過現在知道有點太早了~
想一想:為什麼`int`的最大值$2^{31}-1$要減$1$呢?
解答在下面
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
因為正數是從 $0$ 開始而不是 $1$ ~ $2^{31}$，所以要減 $1$。
而負數是從 $-1$ ~ $-2^{31}$。