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