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