c# for(int i;i<3;i++)迴圈的執行次序

wisdomone1發表於2012-05-09
 今天無意中,在工作中發現以前對for迴圈的理解大錯特錯.

class Program
    {
        static string InStr = "ab";
        private static string AddTo18(string str)
        {
  
            string th = str;
 --------------------------------------------------------------------------------------------------------
 下面為執行完for迴圈第一輪時的執行流程
--------------------------------------------------------------------------------------------------------
            1,先執行i=str.length結果是2(因為instr是ab)
            2,判斷i<3,2<3是符合條件(注:如果不符合i<3,直接就退出for迴圈了)

                //我以前的錯誤理解是執行完i<3後,會執行i++,
                //實際是執行完i<3會執行oth+="0"
            3,此時會執行for迴圈中的oth+="0",此時oth的結果由ab變成ab0
            

--------------------------------------------------------------------------------------------------------
 下面為執行完for迴圈第一輪後的執行流程
--------------------------------------------------------------------------------------------------------
                //執行完for迴圈中的程式碼塊,會執行i++,而不是i<3
            4,執行i++,此時i的結果為3
            
               //執行完i++,會接著執行i<3的判斷
            5,執行i<3,3<3不成立.直接退出for迴圈,不會繼續執行oth+="0"
            for (int i = str.Length; i < 3;i++ )
            {
                oth += "0";
            }
            return oth.Substring(0, 18);
        }
        static void Main(string[] args)
        {
            Console.WriteLine(AddTo18(InStr));
            Console.ReadKey();

        }
    }


一定要加深對於語法的理解.不然由此構成的複雜一些的程式就會弄暈人

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-723150/,如需轉載,請註明出處,否則將追究法律責任。

相關文章