Есть ли разница между 0 и 0.0 в С++? Что вы должны использовать для инициализации двойного?
Спасибо
Ответ 1
Литерал 0 считается литералом int; Литерал 0.0 является литералом double. При назначении double либо будет работать (поскольку int может быть добавлен в расширяющееся преобразование); однако приведение 0.0 в int является сужающим преобразованием и должно выполняться явно; т.е. (int)0.0.
Ответ 2
Я пытаюсь сохранить константы постоянными. 0 для ints. 0.0f или 0.f для float и 0.0 для double.
Для меня самая важная причина для этого - это то, что компилятор и программист видят то же самое.
Если я это сделаю...
float t=0.5f;
float r;
r= 1 * t;
... должен быть назначен 0 или .5? Нет никаких сомнений, если я сделаю это вместо этого...
float t=0.5f;
float r;
r= 1.0f * t;
Ответ 3
Один представляется целым литералом, а другой - литералом с плавающей запятой. Для компилятора действительно не имеет значения, инициализируете ли вы float или doubles с целыми литералами. В любом случае литерал будет скомпилирован в некоторое внутреннее представление.
Я хотел бы предложить 0.0, чтобы сделать ваше намерение (другим программистам) явным образом.