2020年2月24日 星期一

關於 C++ 的遞增( ++ )與遞減( -- )運算

關於 C++ 的遞增( ++ )與遞減( -- )運算

前言

  C++ 的遞增( ++ )與遞減( -- )運算很常會在面試的考題裡,雖然我一直覺得實務上很難碰到類似的問題,但就是很容易會考,重要的是我答錯了,所以把學習的過程做個紀錄。

內容

  遞增( ++ )與遞減( -- )有個讓人容易疑惑的用法如下
int a=0;
int b=0;
printf("%d\n",++a);//1
printf("%d\n",b++);//0
printf("%d\n",a);//1
printf("%d\n",b);//1

疑惑的地方是把運算寫在前方與後方的差異,可以看到 ++a 的結果是 1 ,但 b++ 卻是 0 ,a 與 b 在運算後都是 1 ,寫在前方可以理解為"先遞增再給值",而寫在後方可以理解為"先給值再遞增",觀念其實就是這麼簡單,但我在實務上沒碰過有人會利用這個語言特性來寫程式,但這個語言特性很容易成為面試的考題,而且我還答錯,馬上就被人質疑對 C++ 不熟,真是慘痛的教訓。這個業界非常奇怪,實務不常用的拿來考,並且把當它當重要的標準,也只能無奈地記起來了。

沒有留言:

張貼留言