# 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}$。