ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
970647 Топик полностью
fk0, легенда (15.01.2020 01:01 - 01:04, просмотров: 152) ответил Yft на Как правильно сдвигать в uint64_t ?
(1ULL << word_size) - 1 -- ибо вычисления всегда выполняются в пространстве типов операндов, переход к типу с большей разрядностью автоматически, если не влезает, невозможен. Вообще если word_size -- константа (а в нормальной программе если что-то можно сделать константой, то это НУЖНО сделать константой, ибо вычисления переносятся в compile time), то для константы компилятор должен давать варнинг, мол переполнение. Рекомендую включать все разумные варнинги (-Wall -Wpedantic -Wextra -Wcast-align -Weffc++ -fstrict-aliasing) и выключать потом шибко мешающие. И напоминаю, что в языке C слово const не создаёт константу (как в C++), поэтому если программа на C, то следует скорей использовать макросы.
[ZX]