Вопрос

Есть ли какой -нибудь компилятор, который имеет директиву или параметр для разыгрывания целочисленного расчета для неявного плавания. Например:

float f = (1/3)*5;
cout << f;

«F» - это «0», потому что константы расчета (1, 3, 10) являются целым числом. Я хочу преобразовать целочисленное расчет с директивой компилятора или параметра. Я имею в виду, я не буду использовать явный кастинг или «.f», как это:

float f = ((float)1/3)*5;

или же

float f = (1.0f/3.0f)*5.0f;

Знаете ли вы какой -либо компилятор C/C ++, который имеет какой -либо параметр для выполнения этого процесса без явного литья или «.f»?

Это было полезно?

Решение

Если вам не нравится один из двух методов, которые вы упомянули, вам, вероятно, не повезло.

Что вы надеетесь достичь с этим? Любой специализированный оператор, который сделал «поплавок», должен был бы преобразовать INT в плавание в какой-то момент после токенизации, что означает, что вы не получите никакой выгоды от выполнения.

Другие советы

Любой компилятор, который сделал то, что вы хотите, больше не будет соответствующим компилятором C ++. Семантика целочисленного подразделения хорошо указана (по крайней мере, для положительных чисел), и вы предлагаете изменить это.

Это также было бы опасно, так как это будет применяться ко всему, и в какой -то момент у вас может быть код, который опирается на стандартную целочисленную арифметику, которая будет бесшумно недействительным. (В конце концов, если бы у вас были тесты, которые поймали бы это, у вас, вероятно, были бы тесты, которые поймали бы нежелательную целочисленную арифметику.)

Итак, единственный совет, который у меня есть, - это написать модульные тесты, провести обзоры кода и стараться избегать волшебных чисел (вместо этого определять их как const float).

В C ++ немного странно видеть кучу числовых значений, посвященных коду. Как правило, считается наилучшей практикой перемещать любые «магические числа», подобные этим, к своему собственному статическому значению сплавания, которое устраняет эту проблему.

Нет, эти два варианта - лучшее, что у вас есть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top