1
这是一个学术问题,而不是我真正担心表现的问题。我只是很好奇而已。在我的编程经验中,我也学会了编译器在一半时间内只有智能。铸造值型常量
我有一个静态类,其中定义了一个常量int
,我需要用另一个整数除该常量。现在,我需要从该部门返回的浮动值,所以我不能将它们都作为整数保留。
const int CONSTANTINTEGER = 69;
int integer = 0;
float floatValue = 0f;
for(integer = 0; integer < CONSTANTINTEGER; integer++) {
float floatValue = integer/(float)CONSTANTINTEGER;
//use floatValue for algorithm.....
}
现在,我的问题:是编译器足够聪明来代替(float)CONSTANTINTEGER
创造一个恒定的浮动还是它转换为浮动每一个循环的整数?
看起来像它会投入每次迭代,就像在一个循环内声明一个变量似乎它会被重新创建,并且每次迭代都会超出范围。但是,老实说,我不确定 –
您可以编译它,然后在ILSpy中查看已编译的程序集。如果你看IL,你会看到它在哪里演出。 – Amy
@Amy:或者说,它不是*在做演员,因为它*是一个常量。它需要每次都将'integer'转换为'float',而不是'CONSTANTINTEGER'。如果您不同意,请随时添加更多细节的答案,我们可以更仔细地看。 –