В C# вы можете определить числовой литерал как int или double
Это типы по умолчанию, которым назначаются литералы. Однако игровой движок, над которым я работаю, использует числа с плавающей запятой для определения положения, вращения и т. д. Когда вещественному числу присваивается двойной литерал, т. е. float varFloat = 75.4; компилятор выдает ошибку, сообщая, что требуется двойной литерал быть плавающей точкой, и это правильно. Поэтому нужно превратить двойной литерал в число с плавающей запятой, т.е. float varFloat = 75.4f;. Однако, если задан литерал int, int неявно преобразуется в число с плавающей запятой. Т.е.
Мой вопрос: достаточно ли умен компилятор, чтобы понять, что 44 должно быть числом с плавающей запятой? В противном случае это означает, что при каждом обращении к литералу также выполняется преобразование. В большинстве случаев это действительно не имеет значения. Но с высокопроизводительным кодом потенциально может стать проблемой (даже если она незначительная), если повсюду используются целые числа вместо чисел с плавающей запятой. Насколько мне известно, невозможно изменить эти литералы на числа с плавающей запятой, не просматривая строки исходного кода, на что на самом деле тратится совсем не зря время.
Итак, компилятор преобразует литерал int в литерал с плавающей запятой? Если нет, то что можно сделать с этой тратой вычислительной мощности, кроме попыток избежать ее?
Подробнее здесь:
https://stackoverflow.com/questions/161 ... -to-floats