Что выведет код 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 ошибок.
Предыдущий вопрос
Наименьший целый тип для суммы на Go
Следующий вопрос
Что выведет Go: iota с выражением