Junior — Middle
Kas notiks programmā, ja int tipa mainīgais sasniegs savu maksimālo vērtību un notiks pārrakstīšanās laikā?
sobes.tech AI
Atbilde no AI
Go valodā int ir ar zīmi, vesels skaitlis, kura lielums ir atkarīgs no arhitektūras (parasti 32 vai 64 bitu). Ja int tipa mainīgais sasniedz savu maksimālo vērtību un notiek pārsniegums:
- Vērtība "apgriežas" (wrap around) un kļūst par minimālo iespējamās negatīvās vērtības šim tipam.
- Pārsniegums nerada kļūdu vai izņēmumu izpildes laikā.
Piemēram, 32 bitu int maksimālā vērtība ir 2,147,483,647. Palielinot to par 1, vērtība kļūst -2,147,483,648.
Piemērs:
package main
import "fmt"
func main() {
var x int32 = 2147483647 // maksimālā vērtība `int32`
fmt.Println(x) // 2147483647
x = x + 1
fmt.Println(x) // -2147483648 (pārsniegums)
}
Tādēļ, strādājot ar veseliem skaitļiem, ir svarīgi ņemt vērā pārsnieguma iespēju un izmantot lielāka diapazona tipus vai veikt papildu pārbaudes.