У целых появились строгие и проверяемые приведения между знаковыми и беззнаковыми
20.04.2026Добавлены методы приведения между знаковым и беззнаковым типами одинаковой разрядности: с проверкой, с насыщением и строгие — с паникой при отладке.
Почему обычного приведения недостаточно
Обычное приведение беззнакового к знаковому и обратно молча меняет смысл значения. Отрицательное число, став беззнаковым, превращается в огромное положительное; и наоборот. Компилятор на такое приведение не ругается, потому что формально оно корректно.
Проверка вручную выглядит как сравнение с половиной диапазона или повторный разбор исходного текста. Оба способа легко написать неверно, особенно на границах диапазона.
Три варианта
С проверкой возвращает пустое значение при невозможности. С насыщением ограничивает краем диапазона. Строгий обрывается при отладке и полагается на неопределённое поведение при выпуске — то есть годен только там, где входные данные заведомо в диапазоне.
Оригинал
core/num: implement feature integer_cast_extras
Упоминаний: 1 · Просмотров: 2