Sobes.tech
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 (გადახრა)
}

ამიტომ, მთლიანი რიცხვებით მუშაობისას მნიშვნელოვანია გადახრის შესაძლებლობის გათვალისწინება და გამოიყენოთ უფრო დიდი დიაპაზონის ტიპები ან დამატებითი შემოწმებები.