Строго говоря, то, что вы пытаетесь достичь, кажется контрпродуктивным.
Как правило, можно было бы сократить количество преобразований типа в программе на языке C и, как правило, уменьшить все и любые типы зависимостей в исходном коде. Хороший код C должен быть как можно более независимым от типа.Это, как правило, означает, что рекомендуется избегать явных синтаксических элементов, которые как можно чаще описывают конкретные типы. Лучше сделать
const double foo = 5; /* better */
чем
const double foo = 5.0; /* worse */
, поскольку последний является излишним. Неявные правила преобразования типов языка C будут гарантировать, что первое работает правильно. То же самое можно сказать и о сравнении. Это
if (foo > 0)
лучше
if (foo > 0.0)
, потому что, опять же, бывший более типа независимой.
Неявное преобразование типа в этом случае - очень хорошая вещь, а не плохая вещь. Это поможет вам написать общий не зависящий от типа код. Почему вы пытаетесь избежать их?
Это правда, что в некоторых случаях у вас нет другого выбора, кроме как явно выразить тип (например, использовать 2.0
вместо 2
и т. Д.). Но обычно это можно делать только тогда, когда это действительно нужно. Почему кто-то сделал это без реальной потребности, это вне меня.
Поскольку это помечено как C++: пример в вопросе довольно прост. Для реальных программ (и когда вы не используете встроенные функции) я подчеркиваю использование точного типа и явных конструкторов. Неоднозначное или неявное построение и преобразование являются причинами ошибок, которые трудно найти, а также хитов производительности и правильной правильности программы. – justin