Есть ли разница между 0 и 0.0 в C++? Что вы должны использовать для инициализации двойника?Разница между C++ между 0 и 0.0
Благодаря
Есть ли разница между 0 и 0.0 в C++? Что вы должны использовать для инициализации двойника?Разница между C++ между 0 и 0.0
Благодаря
Буквальное 0
считается быть int
буквальным; Литерал 0.0
является литералом double
. При назначении double
либо будет работать (поскольку int
может быть добавлен в расширяющееся преобразование); однако литье 0.0
в int
является сужающим преобразованием и должно выполняться явно; т.е. (int)0.0
.
Один из них представляет собой целочисленный литерал, другой - литерал с плавающей запятой. Для компилятора действительно не имеет значения, инициализируете ли вы float или doubles с целыми литералами. В любом случае литерал будет скомпилирован в некоторое внутреннее представление.
Я хотел бы предложить 0.0, чтобы сделать ваше намерение (другим программистам) явным образом.
Я пытаюсь сохранить константы постоянными. 0 для ints. 0.0f или 0.f для float и 0.0 для double.
Для меня самая важная причина для этого - это то, что компилятор и программист видят то же самое.
Если я сделаю это ...
float t=0.5f;
float r;
r= 1 * t;
... должны быть назначены г 0 или 0,5? Там без колебаний, если я это сделаю ...
float t=0.5f;
float r;
r= 1.0f * t;
и 0.0f - значение поплавка. : D –
@Rob, вы говорите, что двойной не может быть неявно преобразован в int? Рассмотрим 'int a = 0.0;'. –
Двойник, безусловно, может быть привязан к int без явного приведения. Эта часть ответа должна быть пересмотрена. –