Назначение 64-битной константы как
int64_t foo = 0x1234LL;
не переносится, потому что long long
не обязательно int64_t
. В этом сообщении Какой инициализатор подходит для int64_t? обсуждается использование макроса INT64_C()
из <stdint.h>
, но также возможно используйте static_cast
как
int64_t foo = static_cast<int64_t>(0x1234);
?
Какой из них я должен предпочесть и почему, или оба работают хорошо?
Я искал в Интернете и на SO, но не нашел ни одного места, где изучалась бы опция static_cast
. Я также провел тесты с использованием sizeof()
, чтобы убедиться, что он работает в простых случаях.