// Вопрос 3. Что выведет на экран

В данном коде происходит попытка вычислить 2 в степени 64 с помощью math.Pow, которая возвращает float64, а затем результат приводится к int32.

Короткий ответ

Что ответить на собеседовании

В данном коде происходит попытка вычислить 2 в степени 64 с помощью math.Pow, которая возвращает float64, а затем результат приводится к int32.

Подробный разбор

Ответ с пояснениями

Условие

// Вопрос 3. Что выведет на экран

package main

import "fmt" import "math"

func main() { i := int32(math.Pow(2, 64)) fmt.Println(i) }

Ответ

В данном коде происходит попытка вычислить 2 в степени 64 с помощью math.Pow, которая возвращает float64, а затем результат приводится к int32.

Однако 2^64 = 18446744073709551616 — это число, которое не помещается в int32 (максимум int32 — 2147483647). При приведении большого числа к int32 происходит переполнение, и результат будет равен 0, так как 2^64 — это ровно 1 << 64, а int32 хранит только 32 бита.

Таким образом, программа выведет:

0

Если бы использовать int64, то тоже было бы переполнение, так как 2^64 не помещается в int64 (максимум 2^63-1). math.Pow возвращает float64, и при приведении к целочисленному типу происходит усечение и переполнение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее