int64_t a = 1234;
double d = (double) a;
Это рекомендуемый способ?
int64_t a = 1234;
double d = (double) a;
Это рекомендуемый способ?
используйте static_cast
в качестве ответов на строгу. Я рекомендую не использовать неявный листинг (или даже C-стиль в исходном коде на С++) по нескольким причинам:
static_cast
делает ваше намерение незамедлительным.static_cast
, а остальные С++-стили легко обрабатывать grep
.Вы должны использовать static_cast
или полагаться только на неявный листинг:
int64_t a = 1234;
double d = static_cast<double>(a);
double f = a;
Для типов POD обе версии выполняют одно и то же. Выберите тот, который вы предпочитаете, и будьте последовательны.
Я знаю многих людей, которые предпочитают первое для ввода/чтения, и я склонен согласиться с этим, но я тоже могу жить.
Я много раз слышал аргумент "easy to grep for", но до сих пор не сталкивался с ситуацией, когда мне нужно было выполнить grep мою кодовую базу для трансляции POD.
Вы также можете использовать синтаксис преобразования, который эквивалентен static_cast:
int64_t a = 1234;
double d = double(a);
Это полезная синтаксическая конструкция в том смысле, что она позволяет обрабатывать примитивные типы и типы классов одинаково в шаблоне, либо делая static_cast для примитива, либо вызывая конструктор для типа класса.