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

Баг: Непонимание преобразования знаковый ↔ беззнаковый

Что делают:

var debt int8 = -5; var magic uint8 = uint8(debt) и ждут 0 или ошибку, а получают 251.

Почему ошибка:
Преобразование между знаковым и беззнаковым не меняет биты в памяти. Меняется только интерпретация. Битовая комбинация -5 в int8 (11111011) в uint8 читается как 251.

Как правильно:
Не ожидай математического преобразования (типа abs). Если нужно получить модуль числа, используй math.Abs для float или пиши проверку сам. Если нужно перенести значение без искажения – убедись, что исходное число неотрицательно и влезает в беззнаковый диапазон.

Загрузка...