2016-02-02 7 views
1

Я видел эти два различных способа бросить int к double в C:двойной напечатанный против двойной функции

double double_var = (double) int_var; 
double double_var = double(int_var); 

В чем разница между этими двумя методами? Когда я должен использовать один над другим?

+4

Один действительный C, другой нет. Также не требуется, поскольку «double double_var = int_var;» уже имеет желаемое поведение. –

+5

Первый синтаксически правильный C. Второй синтаксически недействителен в C (но корректен в C++ и означает то же самое, что и первый, когда написан на C++-коде). –

+2

.... Хотя, на C++ вы пытаетесь избежать этих ванильных бросков и вместо этого скорее напишите: '' static_cast (int_var); '' – BitTickler

ответ

2

В Jonathan Lefflerstated, во-первых, из С, а второй из C++:

Первый из них представляет собой С-типа литой; второй - это создание объекта double путем передачи конструктора значения int.

Итак, второе не является отличным, но созданием нового экземпляра (Так что это больше C++, чем C).

Если вы используете только C, то использование конструкторов не имеет значения (в C нет объектно-ориентированного программирования, это функция C++).

Если вы делаете C++, то вам следует избегать стилей C-стиля (как указано в @BitTickler), поскольку проблемы могут возникать в зависимости от типа используемых вами значений. C++ предлагает несколько типов приводов для нескольких случаев.

Для получения более подробной информации см. this answer.

+1

Вторая - синтаксическая ошибка в C. – e0k

Смежные вопросы