C# i=0;i=i++,i的值是多少?,
參考頁面:
http://www.yuanjiaocheng.net/entity/update-entity.html
http://www.yuanjiaocheng.net/entity/delete-entity.html
http://www.yuanjiaocheng.net/entity/add-entity-graph.html
http://www.yuanjiaocheng.net/entity/update-entity-graph.html
http://www.yuanjiaocheng.net/ASPNET-CORE/first.html
昨天看群裡dalao們聊天,有一個人出來問這個問題
這個題應該是挺常見的
int i = 0, t;
for(t = 0;t <= 5;t++)
{
i = i++;
Console.WriteLine(i);
}
大佬說for是個干擾項,去掉也一樣
int i = 0;
Console.WriteLine(i = i++);
Console.WriteLine(i = i++);
Console.WriteLine(i = i++);
群裡面就很多人開始說就是會增加,我也覺得會增加,
當時覺得雖然i先被賦值等於0,之後i的值是會增加,第一個輸出等於1。
然後有人跑了一遍,結果是輸出了一堆0
在進行表達式處理的時候,首先會對i++這樣的運算進行處理,就是說,第一步不是賦值
為i創建i',然後讓i自增。
處理完i++之後,就會進行表達式的更低級的運算處理,但參與運算的是i',
這個時候,將i'賦值給i 。最後,釋放系統所創建的變量,如i'。
然後還有一道升級版的
對於++i的處理,則與i++恰好相反,系統首先會給i進行自增處理,然後才會創建i'
int i = 0;
Console.WriteLine(i = i++ + ++i);
Console.WriteLine(i = i++ + ++i);
第一個輸出的答案是2
第二個是6
第一個就是0+2
第二個就是2+4
新手初學,哪裡不對還請dalao們指出
轉載請聯系