В Jonathan Lefflerstated, во-первых, из С, а второй из C++:
Первый из них представляет собой С-типа литой; второй - это создание объекта double
путем передачи конструктора значения int
.
Итак, второе не является отличным, но созданием нового экземпляра (Так что это больше C++, чем C).
Если вы используете только C
, то использование конструкторов не имеет значения (в C нет объектно-ориентированного программирования, это функция C++).
Если вы делаете C++
, то вам следует избегать стилей C-стиля (как указано в @BitTickler), поскольку проблемы могут возникать в зависимости от типа используемых вами значений. C++
предлагает несколько типов приводов для нескольких случаев.
Для получения более подробной информации см. this answer.
Один действительный C, другой нет. Также не требуется, поскольку «double double_var = int_var;» уже имеет желаемое поведение. –
Первый синтаксически правильный C. Второй синтаксически недействителен в C (но корректен в C++ и означает то же самое, что и первый, когда написан на C++-коде). –
.... Хотя, на C++ вы пытаетесь избежать этих ванильных бросков и вместо этого скорее напишите: '' static_cast (int_var); '' –
BitTickler