Есть ли какой-либо компилятор, который имеет директиву или параметр для вычисления целочисленного вычисления для неявного размещения. Например:Неявное литье Целочисленное вычисление для float в C++
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/float, которые больше по вашему вкусу? –
BTW: во втором случае только одна из констант '1' и' 3' должна быть плавающей. Другая константа и '5' будут автоматически продвигаться. Также вам не нужно определять, что они будут 'float', двойники будут неявно понижены до float:' float f = (1.0/3) * 5' сделает трюк (или '5.0/3'). –
@David: «5 будет автоматически продвигаться», у меня создалось впечатление, что когда интегральные константы, меньшие, чем int, преобразуются в int, мы говорим, что они «продвигаются», но во всех остальных случаях мы просто говорим «конвертировано». –