遞增運算子(++) 與遞減運算子(–)

在許多程式語言中,遞增運算子(++) 與遞減運算子(–)在迴圈的使用上,一直佔有一席之地,原因無他,只是因為他非常好用,而在這裡先解釋一下他的用法。

當我們寫「x++」時,意味著我們將要進行「x=x+1」的運算;同理,當我們寫「x–」時,則是意味著我們將要進行「x=x-1」的運算。

而在以上的用法,就稱為後置(posfix)版本,或許聰明的您會想到,那前置(prefix)是什麼?

如果我們將「x++」改寫為「++x」時,我們還是會進行「x=x+1」的運算;同理,當我們寫「–x」時,則是意味著我們將要進行「x=x-1」的運算。

或許您會問,那後置和前置的用法,一樣囉?

答案並不盡然,這兩者差在運算的時間點不同,以一個例子來說好了。

<?php
x=1;
print(x++);  // 1
print(x);    // 2
print(++x);  // 3
print(x);    // 3
?>

一開始,x的預設值為1,而在印出「x++」時,大多數的程式語言會先將x印出來,再進行「x=x+1」的動作,所以接下來的print(x),會秀出的結果是2。

在進行印出「++x」的動作時,大多數的程式語言會先將「x=x+1」進行運算,再進行印出x的動作。所以在此行,印出的結果就是3了。

如果以上的例子還不夠明白,那我們舉個比較生活化的例子好了。

如果我們有去超商買過東西,您可以先請店員先把商品包裝起來再結帳,也可以請店員先結帳再包裝商品,如果把「x=x+1」的動作比喻為店員結帳,而把商品包裝當作值的話,那麼「x++」就是屬於前者,「++x」就是屬於後者囉!

簡單來說,就是都有進行結帳的動作,但只是時間點的不同而已。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments