Sobes.tech
Junior — Middle

Kas nutiks programoje, jei int tipo kintamasis pasieks savo maksimalų reikšmę ir įvyks perpildymas vykdymo metu?

sobes.tech AI

Atsakymas iš AI

Go kalboje int yra ženklinis sveikasis skaičius, kurio dydis priklauso nuo architektūros (paprastai 32 arba 64 bitų). Jei int tipo kintamasis pasiekia savo maksimalų reikšmę ir įvyksta pertekėjimas:

  • Reikšmė "apsisuka" (wrap around) ir tampa mažiausia galima neigiamą reikšmę šiam tipui.
  • Pertekėjimas nesukelia klaidos ar išimties vykdymo metu.

Pavyzdžiui, 32 bitų int maksimalus reikšmė yra 2,147,483,647. Padidinus jį 1, reikšmė taps -2,147,483,648.

Pavyzdys:

package main
import "fmt"

func main() {
    var x int32 = 2147483647 // maksimali reikšmė `int32`
    fmt.Println(x)           // 2147483647
    x = x + 1
    fmt.Println(x)           // -2147483648 (pertekėjimas)
}

Todėl dirbant su sveikaisiais skaičiais, svarbu atsižvelgti į galimą pertekėjimą ir naudoti didesnio diapazono tipus arba atlikti papildomus patikrinimus.