Сайт работает в тестовом режиме - все замечания, предложения и информацию о найденных ошибках направляйте, пожалуйста, в Telegram-группу
Курс в процессе наполнения. Полный курс доступен на Степике

Баг: Прямое приведение `float` → `uint` для отрицательных чисел

Что делают:
uint(-3.14) и ожидают 0 или ошибку. Получают огромное положительное число (например, 18446744073709551613).

Почему ошибка:
Биты отрицательного числа интерпретируются как беззнаковое. Математического преобразования не происходит.

Как правильно:
Сначала проверять, что число неотрицательное:

if f >= 0 {
    u := uint(f)
} else {
    // ошибка или обработка
}

Загрузка...