C# i=0;i=i++,i的值是多少?


昨天看群里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們指出
轉載請聯系
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM