нет
Там unsigned, никакого UB!
Вот кто тебя предохраняет от переполнения - Великий UB!
Да, в этот раз он сжалился
При переполнении-то ? Точнее, это присваивание переменной значения вне диапазона её типа данных...
Помоему всё таки defined поведение для таких случаев
Короче, если ты поместишь в целевую переменную значение, которое выходит за её диапазон значений, будет UB
ну... можно конечно перепроверить, но ...
так тут просто младшие 8 бит заберутся, как можно выйти за диапазон
а старшие куда денутся ?
Не запугивай уж так сильно, там всё определено. :) If the destination type is unsigned, the resulting value is the smallest unsigned value equal to the source value modulo 2n where n is the number of bits used to represent the destination type. That is, depending on whether the destination type is wider or narrower, signed integers are sign-extended[footnote 1] or truncated and unsigned integers are zero-extended or truncated respectively.
останутся на месте)
ну может и так, я бы битовую масочку всё равно применил...
будут отброшены, и static_cast говорит компилятору, что мы в курсе
Но это же не переполнение, дыыаааа!
да и переполнение unsigned тоже defined
вообще нет, хотя это софистика
Куда не плюнь, везде UB Пишешь short x = 1; UB Везде уб
Обсуждают сегодня