Sobes.tech
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.