Junior — Middle
Co się stanie w programie, jeśli zmienna typu int osiągnie swoją maksymalną wartość i podczas wykonywania nastąpi przepełnienie?
sobes.tech AI
Odpowiedź od AI
W Go, typ int jest typem całkowitym ze znakiem, którego rozmiar zależy od architektury (zazwyczaj 32 lub 64 bity). Jeśli zmienna typu int osiągnie swoją maksymalną wartość i nastąpi przepełnienie:
- Wartość "zawija się" (wrap around) i staje się minimalną możliwą wartością ujemną dla tego typu.
- Przepełnienie nie powoduje błędu ani wyjątku podczas działania programu.
Na przykład, dla 32-bitowego int, maksymalna wartość to 2 147 483 647. Po dodaniu 1, wartość ta stanie się -2 147 483 648.
Przykład:
package main
import "fmt"
func main() {
var x int32 = 2147483647 // maksymalna wartość dla int32
fmt.Println(x) // 2147483647
x = x + 1
fmt.Println(x) // -2147483648 (przepełnienie)
}
Dlatego podczas pracy z liczbami całkowitymi ważne jest uwzględnienie możliwości przepełnienia i używanie typów z większym zakresem lub dodatkowych kontroli.