TOP

c#語言自增自減運算符深入剖析
2017-10-13 10:43:39 】 瀏覽:10137
Tags:

C語言的++和--對于初學者來說一直都是難題,甚至很多老手也會產生疑惑;

最大的問題在于 ++可以放在變量后面,也可以放在前面;

如 i++; ++i;

自減運算符與++原理一樣,只是變量變價為減而已,下面我們主要就以++為例;

實力剖析:

例題一:

    int i = 3, j = 4;
            i++;
            ++j;
            Console.WriteLine(i);
            Console.WriteLine(j);

對此大家都不會有什么疑惑,輸出結果是4和5;下面我們來做一個小改動:

       int i = 3, j = 4;
            int a=i++;
            int b=++j;
            Console.WriteLine(a);
            Console.WriteLine(b);

結果又是多少呢?這里就開始出現++后置和++前置的區別了,結果是3和5;

1.  ++后置:第一步計算返回結果,與變量相同,第二步將變量的值自增1(通俗的講就是先返回結果并將結果賦值給變量a,然后再自增)

2.  ++前置:第一步計算返回結果并且自增1,第二步將變量的值自增1(通俗的講就是先自增1,然后返回自增1的結果,然后賦值給變量b)

很明顯 a=i++,是先把i=3賦值給a,然后i再自增;

      b=++j,是先把j自增為5,然后再賦值給b;

其實基本道理就是這樣,但在更復雜的情況下又是如何呢,咋們來看看:

例題二:

            int i = 3, j = 4;
            int a=i++ + i++;
            int b=++j + ++j;
            Console.WriteLine(a);
            Console.WriteLine(b);

上面的結果是7和11;

咋們來看下 a=i++ + i++;第一個i++ 這里返回結果為3,然后i自增為4;由于運算還沒有結束,故這個時候不會立即把3賦值給a;再看第二個i++,這個時候i為4,故返回結果為4;所以a=3+4;輸出7

b=++j + ++j;第一個++j,j自增為5并且返回5;第二個++j,j這時候是5自增為6并且返回6;故b=5+6;輸出11;

來點復雜的

例題三:

 int i = 3, j = 4;
            int a=i++ + j++ + --i + ++j;
            int b=--j + j++ + i-- + i++ + --i ;
            Console.WriteLine(a);
            Console.WriteLine(b);

上面的執行代碼,解析為下面就是:

            a = 3 + 4 + 3 + 6 = 16;
            b = 5 + 5 + 3 + 2 + 2 = 17;

如果你的結果不是這個,希望再看下上面的例題1和2;

    

 

請關注公眾號獲取更多資料



】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇[翻譯] 編寫高性能 .NET 代碼--第.. 下一篇MessagePack 新型序列化反序列化..