Junior — Middle
Mi történik a programban, ha egy int típusú változó eléri a maximális értékét, és futás közben túlcsordulás történik?
sobes.tech MI
Válasz az MI-től
Go nyelvben az int típus egy előjeles egész szám típus, amely mérete az architektúrától függ (általában 32 vagy 64 bit). Ha egy int típusú változó eléri a maximális értékét és túlcsordulás történik:
- Az érték "körbefordul" (wrap around) és a legkisebb lehetséges negatív szám lesz ennek a típusnak.
- A túlcsordulás nem okoz hibát vagy kivételt futás közben.
Például egy 32 bites int maximális értéke 2,147,483,647. Ha 1-gyel növeljük, az érték -2,147,483,648 lesz.
Példa:
package main
import "fmt"
func main() {
var x int32 = 2147483647 // max érték az int32-hez
fmt.Println(x) // 2147483647
x = x + 1
fmt.Println(x) // -2147483648 (túlcsordulás)
}
Ezért, egész számokkal való munkánál fontos figyelembe venni a túlcsordulás lehetőségét, és nagyobb tartományú típusokat vagy további ellenőrzéseket alkalmazni.