星期四, 8月 01, 2013

++與--

遞增型和遞減型運算子算是蠻有趣的JAVA、C#以及老祖宗C++表示法,
++代表+1的意思,同理--代表-1,
但是++與--又區分成前置型與後置型兩種,
那a++和++a有何不同呢?
看到這裡說實在我已經昏頭了,以下說明程式原理。
程式碼如下
int a = 3;
System.output.println(a++);
System.output.println(a);
int a = 3;
System.output.println(++a);
System.output.println(a);
由於(a++)是先取值,再進行運算,
當下僅先取出值3,並沒有馬上+1,
(++a)則是先運算,再進行取值,
馬上進行1+3,
因此在記憶體內
System.output.println(a++);
會印出3,
System.output.println(++a);
則會印出4,
int a = 3;
System.output.println(a++);
System.output.println(a);
int a = 3;
System.output.println(++a);
System.output.println(a);
看起來最後結果都一樣印出4,
但是過程卻是大不同呢。


延伸問題
int a = 3;
System.out.println(a++);
System.out.println(a );
會印出3、4,
那以下的程式會印出多少呢?
int a = 3;
int b = 1;
b = a++;
System.out.println(a++);
System.out.println(a );

加上了,b = a++之後 int b = 1;
b = a++;
由於程式需要由右向左看,a先進行加一,接著才被Assign給b, 因此會列印出4、5

問:那請問寫a++的好處在哪?

答:會寫的人是有風格的程式設計師,
所謂的風格就是你寫的Code一般人看不懂

沒有留言:

張貼留言