Какой результат получим если разделить int на 0 и float на 0

Разделение числа на 0 — это особый случай в программировании, и поведение зависит от типа чисел. Для целочисленных и чисел с плавающей запятой поведение при делении на 0 различается.

Деление целого числа на 0Если попытаться разделить целое число (`int`, `int32`, `int64` и т.д.) на 0, то Go вызовет паническое состояние (runtime panic). Это происходит потому, что целочисленное деление на 0 является неопределенной операцией.

```go
package main

func main() {
    var a int = 10
    var b int = 0
    result := a / b
    fmt.Println(result)
}
```

Этот код приведет к панике с ошибкой вида:

```
panic: runtime error: integer divide by zero
```

Деление числа с плавающей запятой на 0Если разделить число с плавающей запятой (`float32`, `float64`) на 0, то Go не вызовет паники. Вместо этого будут использованы специальные значения IEEE 754: положительная бесконечность, отрицательная бесконечность или NaN (Not a Number), в зависимости от знака числителя.

```go
package main

import (
    "fmt"
    "math"
)

func main() {
    var a float64 = 10.0
    var b float64 = 0.0

    // Деление положительного числа на 0
    positiveInf := a / b
    fmt.Println("Positive Infinity:", positiveInf) // Вывод: Positive Infinity: +Inf

    // Деление отрицательного числа на 0
    negativeInf := -a / b
    fmt.Println("Negative Infinity:", negativeInf) // Вывод: Negative Infinity: -Inf

    // Деление нуля на ноль
    zeroDivZero := b / b
    fmt.Println("Zero divided by Zero:", zeroDivZero) // Вывод: Zero divided by Zero: NaN

    // Проверка значений
    fmt.Println("Is Inf:", math.IsInf(positiveInf, 1)) // true
    fmt.Println("Is Inf:", math.IsInf(negativeInf, -1)) // true
    fmt.Println("Is NaN:", math.IsNaN(zeroDivZero)) // true
}
```

В этом примере:

  • Деление положительного числа на 0 дает положительную бесконечность (`+Inf`).
  • Деление отрицательного числа на 0 дает отрицательную бесконечность (`-Inf`).
  • Деление нуля на ноль дает `NaN`.
  • Деление целого числа на 0 в Go вызывает паническое состояние (runtime panic).
  • Деление числа с плавающей запятой на 0 в Go приводит к бесконечности (`+Inf`, `-Inf`) или `NaN` без вызова паники.

May 23, 2024, easyoffer

Примеры ответов: