int?x;?//?這一句是否已經開辟了空間?
x?=?1;如果是的話:int?x;
while(true)
{
????x?=?1;
}
//上面代碼比下面代碼性能高?
while(true)
{
????int?x?=?1;
}
1 回答

onemoo
TA貢獻883條經驗 獲得超454個贊
你在三個語言分區中都問了這個問題,那么你想問這代碼在三種語言中的行為嗎?
在 C 和 Java 中,第一個問題的回答是:是的。
C 語言中,int x; 就算是定義。Java 中這樣的本地變量也是有值的。只不過它們的初值都是未定義的。
C# 我不了解。
至于第二個問題:你完全沒有必要考慮這種過于細節的所謂“優化”,編譯器完全會處理好這些的(它可能會把這兩種代碼優化成同樣效率的結構)。
通常在寫代碼時最優先考慮的是代碼的邏輯性和可讀性。具體來說,如果 x 只會用在循環中,更推薦將 x 寫在循環體里。這樣更具邏輯性,也把 x 的作用域限制在循環體中,避免 x 不必要地傳播到循環體外面。
添加回答
舉報
0/150
提交
取消