Sobes.tech
Junior — Middle

Дар программа чӣ мешавад, агар тағйирёбандаи навъи int ба арзиши максималӣ расад ва дар вақти иҷроот фаро расад?

sobes.tech AI

Ҷавоб аз AI

Дар Go, навъи int — ин навъи ададии бо нишон, ки андозаи он аз архитектура вобаста аст (одатан 32 ё 64 бит). Агар тағйирёбандаи навъи int ба арзиши максималӣ расад ва аз ҳад зиёд шавад:

  • Арзиш "мебарояд" (wrap around) ва ба камтарин рақами манфии имконпазир барои ин навъ табдил меёбад.
  • Аз ҳад зиёд шудани арзиш дар вақти иҷрои барнома хато ё истисно намебарояд.

Масалан, барои int 32-бит, арзиши максималӣ 2,147,483,647 аст. Агар онро ба 1 зиёд кунед, арзиш ба -2,147,483,648 мегардад.

Масалан:

package main
import "fmt"

func main() {
    var x int32 = 2147483647 // арзиши максималӣ барои int32
    fmt.Println(x)           // 2147483647
    x = x + 1
    fmt.Println(x)           // -2147483648 (аз ҳад зиёд шудан)
}

Аз ин рӯ, ҳангоми кор бо рақамҳои бутун, муҳим аст, ки имконияти аз ҳад зиёд шуданро ба назар гирифта, навъҳои бо диапазони калонтар ё санҷишҳои иловагӣ истифода баред.