Что выведет код Junior Типы и нулевые значения обновлено

Что выведет Go: преобразования чисел

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23.

package main

import "fmt"

func main() {
    f := -2.7
    var big int64 = 300
    fmt.Println(int(f), int8(big), uint8(big), 7/2*2.0)
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: -2 44 44 6. float в int отбрасывает дробную часть к нулю: -2.

Что выведет

-2 44 44 6

Разбор

float в int отбрасывает дробную часть к нулю: -2. При сужении целых берутся младшие 8 бит: 300 = 256 + 44, поэтому и int8, и uint8 дают 44. В 7/2*2.0 все операнды нетипизированные константы, и выражение вычисляется слева направо: 7/2 это деление целых констант, 3, и только потом умножение на 2.0 даёт 6. Ответ 7 был бы, если бы деление шло во float.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме