iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 6
0

我們常常看到for loop出現i++++i,但不管是使用哪一種,結果都沒有差別。
所以i++++i是相同的東西嗎?
當然不是,如果我們直接使用i++++i,兩者的輸出是相等的。(可以先理解為相同
我們直接看看程式

int main(){
int A=2;
int B=2;
A++; 
++B; 
printf("A=%d  B=%d \n",A,B);
return 0;
}

https://ithelp.ithome.com.tw/upload/images/20171221/201078181PDiC2gnoL.png
兩者A與B的輸出均是3
但只要我們是以表示式來使用,效果就不一樣了。

int main(){
int A = 2;
int B = 2;
int C = A++; 
int D = ++B; 
printf("C=%d  D=%d \n",C,D);
return 0;
}

https://ithelp.ithome.com.tw/upload/images/20171221/20107818LiCWreXJ6d.png
A++:意思是先把A放到C,再執行A=A+1 的動作。
因為A先放到C,所以C的值會是2
++B:意思是先再執行B=B+1,再把B放到D。
因為B會先執行B=B+1的動作,所以D的值會是3

=============分格線=============

那我出例題,看大家能不能算出正確的值

int main(){
int A=2 , AA=0;
int B=2 , BB=0;

AA = (A++) + (A++);
BB = (++B) + (B++);
 
printf("A=%d   B=%d\n",AA,BB);
return 0;
}

在**=** 的右端,我們從左往右看
AA = (A++) + (A++);
左方的A++ : 是指先執行A=2,下一次再執行A=A+1
右方的A++ : 由於**左方的A++**所輸出的值是2,因此在此處的A也是2。同樣地,先執行A=2,下一次再執行A=A+1
(A++) + (A++) : 左方的A++右方的A++,也均為2,所以我們可以理解為AA=2+2,所以AA值為4
=============

BB = (++B) + (B++);
左方的++B : (已知B=2)是指先執行B=2+1,所以B=3
右方的B++ : (目前B=3)是指先執行B=3,下一次再執行B=B+1
(++B) + (B++) : 左方的++B右方的B++,也均為3,所以我們可以理解為BB=3+3,所以BB值為6

https://ithelp.ithome.com.tw/upload/images/20171222/20107818Z9xuwaldCg.png

=============分格線=============

但覺得很少人會同一個表示式連續用2次,而且可讀性不高,注腳不方便。
我記得有一位工程師說過:以前很喜歡用int A=0,B=0,C=0;,一整行宣告所有變數
但當上工程師後就會很討厭這種寫法,會把每一變數單獨宣告

int A=0;   //XXXXXX
int B=0;   //XXXXXX
int C=0;   //XXXXXX

因為這樣比較好理解,注腳也比較方便


上一篇
如何在學弟妹前裝帥 [2]windows分享WIFI
下一篇
陣列中找出正方形 [1]簡說&與&&、|與||
系列文
提神?看程式比喝咖啡更有效。30

尚未有邦友留言

立即登入留言