Sobes.tech
Junior — Middle

Šta će se dogoditi u programu ako promenljiva tipa int dostigne svoju maksimalnu vrednost i dođe do prelivanja tokom izvršavanja?

sobes.tech АИ

Одговор од АИ

U Go jeziku, tip int je potpisani celobrojni tip čija veličina zavisi od arhitekture (obično 32 ili 64 bita). Ako promenljiva tipa int dostigne svoju maksimalnu vrednost i dođe do prelivanja:

  • Vrednost se "omota" (wrap around) i postaje minimalni mogući negativni broj za taj tip.
  • Prelivanje ne izaziva grešku ili izuzetak tokom izvršavanja.

Na primer, za 32-bitni int, maksimalna vrednost je 2.147.483.647. Ako je povećate za 1, vrednost će biti -2.147.483.648.

Primer:

package main
import "fmt"

func main() {
    var x int32 = 2147483647 // maksimalna vrednost za int32
    fmt.Println(x)           // 2147483647
    x = x + 1
    fmt.Println(x)           // -2147483648 (prelivanje)
}

Zbog toga je prilikom rada sa celim brojevima važno uzeti u obzir mogućnost prelivanja i koristiti tipove sa većim opsegom ili izvršiti dodatne provere.