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'。如果您不同意,請隨時添加更多細節的答案,我們可以更仔細地看。 –