Sobes.tech
Junior — Middle

Co se stane v programu, pokud proměnná typu int dosáhne své maximální hodnoty a dojde k přetečení během běhu?

sobes.tech AI

Odpověď od AI

V jazyce Go je typ int znaménkový celé číslo, jehož velikost závisí na architektuře (obvykle 32 nebo 64 bitů). Pokud proměnná typu int dosáhne své maximální hodnoty a dojde k přetečení:

  • Hodnota se "zabalí" (wrap around) a stane se minimálně možným záporným číslem tohoto typu.
  • Přetečení nezpůsobí chybu nebo výjimku během běhu.

Například u 32bitového int je maximální hodnota 2 147 483 647. Pokud ji zvýšíte o 1, hodnota se stane -2 147 483 648.

Příklad:

package main
import "fmt"

func main() {
    var x int32 = 2147483647 // maximální hodnota pro int32
    fmt.Println(x)           // 2147483647
    x = x + 1
    fmt.Println(x)           // -2147483648 (přetečení)
}

Proto je při práci s celými čísly důležité brát v úvahu možnost přetečení a používat typy s větším rozsahem nebo provádět dodatečné kontroly.