Sobes.tech
Senior

// 3-savol. ekraningizda nima chiqariladi package main import "fmt" import "math" func main() { i := int32(math.Pow(2, 64)) - 1 fmt.Println(i) }

sobes.tech AI

AIdan javob

Ushbu kodda math.Pow(2, 64) hisoblanadi, bu float64 turidagi 2 ning 64-darajasi bo'lgan sonni qaytaradi. Keyin bu qiymat int32 turiga o'tkaziladi va 1 ga kamaytiriladi.

Ammo:

  • math.Pow(2, 64) 18446744073709551616 ga teng, bu int32 ga sig'maydi (maksimal qiymat taxminan 2,1e9).
  • float64 dan int32 ga o'tkazish yuki va 2^32 moduli bo'yicha kesiladi.

Natijada, int32(math.Pow(2, 64)) 0 ga teng bo'ladi, chunki 2^64 moduli 2^32 ga teng 0.

Shu sababli, i := int32(math.Pow(2, 64)) - 1:

0 - 1 = -1

Ekranda quyidagicha ko'rinadi:

-1