在c#中,您可以将数字字面值定义为int或double。
我的问题是编译器是否足够聪明,能够意识到44应该是一个浮点字面量?如果不能,那么每次访问这个字面量时,都会进行一次转换。在大多数情况下,这并不重要。但是对于高性能代码来说,如果整数被广泛使用而不是浮点数,则这可能成为一个潜在的问题(即使这只是一个小问题)。据我所知,没有办法将这些字面量转换为浮点数,而不需要经过大量源代码的修改,这显然是很费时间的。
Double var1 = 56.1;
int var2 = 51;
以下是字面值默认分配的类型。然而,我正在使用浮点数来表示位置、旋转等内容的游戏引擎。当将一个双精度字面量赋给浮点数,例如:float varFloat = 75.4;
编译器会报错,提示需要将双精度字面量转换为浮点数,这是正确的。因此,需要将双精度字面量转换为浮点数,例如:float varFloat = 75.4f;
。然而,当给定一个整型字面量时,整型会隐式转换为浮点数。例如:
float varFloat = 44; // This is fine.
我的问题是编译器是否足够聪明,能够意识到44应该是一个浮点字面量?如果不能,那么每次访问这个字面量时,都会进行一次转换。在大多数情况下,这并不重要。但是对于高性能代码来说,如果整数被广泛使用而不是浮点数,则这可能成为一个潜在的问题(即使这只是一个小问题)。据我所知,没有办法将这些字面量转换为浮点数,而不需要经过大量源代码的修改,这显然是很费时间的。
那么,编译器是否会将整数字面量转换为浮点数字面量呢?如果不会,除了尝试避免这种浪费之外,还能做些什么来解决这个问题呢?