Как Вы указываете неподписанную международную константу на 64 бита 0x8000000000000000 в VS2008?

Я считал о Microsoft определенный суффикс "i64" для целочисленных констант. Я хочу сделать Неподписанный сдвиг к ULONGLONG.
ULONGLONG bigNum64 = 0x800000000000000i64 >> myval;

В нормальном C я использовал бы суффикс "U", например, подобные 32 битовых операции будут
ULONG bigNum32 = 0x80000000U >> myval;

Я НЕ хочу 2's дополнительное расширение знака к propogate через высокие биты. Я хочу НЕПОДПИСАННЫЙ сдвиг на числе константы на 64 бита. Я думаю, что мой первый оператор собирается сделать сдвиг СО ЗНАКОМ ПРАВИЛЬНО.

Я попробовал 0x800000000000000i64U и 0x800000000000000u64 но получил ошибки компилятора.

23
задан franji1 14 May 2010 в 16:17
поделиться

1 ответ

Вы можете использовать суффикс ull, который является стандартным (C99 и C++0x) способом указания целочисленного литерала unsigned long long, а long long имеет как минимум 64 бита.

33
ответ дан 29 November 2019 в 01:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: