Sobes.tech
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.