Sobes.tech
Junior — Middle

Dasturda nima bo'ladi, agar int turidagi o'zgaruvchi o'zining maksimal qiymatiga yetib, bajarilish vaqtida to'ldirish yuzaga kelsa?

sobes.tech AI

AIdan javob

Go tilida int — bu imzo bilan raqamli tur, uning hajmi arxitekturaga bog‘liq (odatda 32 yoki 64 bit). Agar int turidagi o‘zgaruvchi uning maksimal qiymatiga yetib qolsa va to‘ldirish yuz bersa:

  • Qiymat "qaytib o‘raladi" (wrap around) va bu tur uchun minimal mumkin bo‘lgan manfiy raqamga aylanadi.
  • To‘ldirish bajarilish vaqtida xato yoki istisno chaqirmaydi.

Masalan, 32-bitli int uchun maksimal qiymat 2,147,483,647. Uni 1 ga oshirsangiz, qiymat -2,147,483,648 bo‘ladi.

Misol:

package main
import "fmt"

func main() {
    var x int32 = 2147483647 // int32 uchun maksimal qiymat
    fmt.Println(x)           // 2147483647
    x = x + 1
    fmt.Println(x)           // -2147483648 (to‘ldirish)
}

Shuning uchun, butun sonlar bilan ishlashda, to‘ldirish ehtimolini hisobga olish va kengroq diapazondagi turlar yoki qo‘shimcha tekshiruvlar qilish muhimdir.