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.