На данный вопрос уже ответили:
(uint64_t)1 << (size- (size - 1) / 64*64) 1 unsigned __int64
((uint64_t)1 <<64) 0 unsigned __int64
(size- (size - 1) / 64*64) 64 int
int size=128;
Почему первое выражение не 0?
Visual C++ 2017
Из стандарта ([expr.shift]p1) об <<
:
Если правый операнд отрицательный либо его значение больше или равно длине (в битах) левого операнда после расширения, то поведение программы не определено.
128-(128-1)/64*64 = 64
Т.е. равно длине левого операнда - так что поведение не определено...
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имею api формата localhost/api/?authmethod={"username" : "value1", "password" : "value2"}
При изучении Stream API, часто встречал употребление выражений lazy и eager операторы, но нигде толком не мог найти нормальное определение этих понятий