Junior — Middle
რა მოხდება პროგრამაში, თუ int ტიპის ცვლადი მიაღწევს თავის მაქსიმალურ მნიშვნელობას და შესრულების დროს მოხდება გადახრა?
sobes.tech AI
პასუხი AI-სგან
Go ენაში, int ტიპი არის ნიშანიანი მთლიანი რიცხვი, რომლის ზომა დამოკიდებულია არქიტექტურაზე (საშუალოდ 32 ან 64 ბიტი). თუ int ტიპის ცვლადი მიაღწევს მაქსიმალურ მნიშვნელობას და მოხდება გადახრა:
- მნიშვნელობა "გადაფურცლდება" (wrap around) და ხდება ამ ტიპისთვის მინიმალური შესაძლო უარყოფითი რიცხვი.
- გადახრა არ იწვევს შეცდომას ან გამონაკლისს შესრულების დროს.
მაგალითად, 32-ბიტიანი int-ის მაქსიმალური მნიშვნელობაა 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 (გადახრა)
}
ამიტომ, მთლიანი რიცხვებით მუშაობისას მნიშვნელოვანია გადახრის შესაძლებლობის გათვალისწინება და გამოიყენოთ უფრო დიდი დიაპაზონის ტიპები ან დამატებითი შემოწმებები.