1. 程式人生 > >i++和++i

i++和++i

++i 我們 一行 ron 百度 let 進行 就是 oot

i++和++1

概述
i++和++i 這個問題困擾了我很長時間,在這段時間裏自己不止一次的懷疑自己的智商,難道自己對編程一點天賦都沒有嗎?此問題嚴重打擊了我的自信心.......
也曾苦苦暗自琢磨,也曾百度谷歌瘋狂搜索,得到答案都是一樣的:“i++是先賦值,後運算;而++1是先運算,後賦值”,誰給誰賦值?誰和誰運算?越看越蒙。
直到今天,終於在一位老師的點撥下搞明白了。
我們要從兩個不同的角度等待這個問題,第一個角度我稱為“自己給自己玩”,第二個角度我稱為“自己陪別人玩”
第一個角度:“自己給自己玩-------都是a=a+1的意思”
無論是i++還是++i,都是都是在原本的數值上加一的意思,如下面的兩個例子:

[root@www ~]# i=2
[root@www ~]# let i++
#如上,上面的i++就相當於i=i+1,第一個i在沒運算之前是沒有值的,第二個i就是代表上面的2;在運算之後的結果就變成了i=3(2+1)了,所以下面的echo $i的值就是3
[root@www ~]# echo $i
3
---------------------------------------我是第一個角度下,i++和++i的分隔線---------------------------------------
[root@www ~]# i=3
[root@www ~]# let ++i
#如上,上面的++i也相當於i=i+1,第一個i在沒運算之前是沒有值的,第二個i就是代表上面的3;在運算之後的結果就變成了i=4(3+1)了,所以下面的echo $i的值就是4
[root@www ~]# echo $i
4
小結:
在第一個角度下,都是先賦值,再運算。也就是說先給第二個i賦值,然後進行運算,最後得出第一個i的值。
第二個角度:“自己陪別人玩---沒那麽簡單,有了分別心,分別了先後”
這裏的先後指的賦值和運算的先後,那麽誰給誰賦值?誰為誰運算?先別急,慢慢來。
我們先要理解“自己給自己玩”是什麽意思?所謂的自己給自己玩,就是自己拿自己“開刀”,在自己的基礎上加加減減,對別人(別的變量)沒有什麽影響。就像i++和++i,都是圍繞著$i,自己圍繞著自己也翻不起什麽風浪,不管是i++還是++i全是i=i+1的意思,並且在運算之前第一個i沒有值,而第二個i是有值的,運算之後第一個i才是有值的。
而自己陪別人玩的意思就是通過自己給別的變量賦值,這樣就沒有那麽簡單了!
給別人賦值時,如果用i++的話,就得先把i原本的值賦給別人,然後再自己給自己運算,舉個粟子:
[root@www ~]# i=2
[root@www ~]# let x=i++ # 變量i現在給變量x賦值,過程是這樣的,i要先把自己的值(也就是2)賦給x,i原本是2,賦給x之後,x就變成了2,所以當你echo $x的時候就是2,不信你就看下一行!好,繼續,x現在有值了,就先把x放一邊,剩下的就是i++了,i++就是i=i+1的意思,就又回到了“自己給自己玩”,這樣i就等於3了,不信你看下下行!
[root@www ~]# echo $x
2
[root@www ~]# echo $i
3
總結:i++先穩住別的變量,先給別的變量賦值,然後再自己給自己玩。
---------------------------------------我是第二個角度下,i++和++i的分隔線---------------------------------------
給別人賦值時,如果用++i的話,就得自己先給自己運算,然後把運算後的結果賦給別的變量,舉個粟子
[root@www ~]# i=2
[root@www ~]# let x=++i #先是“自己給自己玩”,x在沒有運算之前是沒有值的,只有i有值(2),先看++i,我們可以得到i=3,而x在i運算之後就等於i的值,所以也等於3。
[root@www ~]# echo $x
3
[root@www ~]# echo $i
3

i++和++i