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 (аз ҳад зиёд шудан)
}
Аз ин рӯ, ҳангоми кор бо рақамҳои бутун, муҳим аст, ки имконияти аз ҳад зиёд шуданро ба назар гирифта, навъҳои бо диапазони калонтар ё санҷишҳои иловагӣ истифода баред.