在許多程式語言中,遞增運算子(++) 與遞減運算子(–)在迴圈的使用上,一直佔有一席之地,原因無他,只是因為他非常好用,而在這裡先解釋一下他的用法。
當我們寫「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」就是屬於後者囉!
簡單來說,就是都有進行結帳的動作,但只是時間點的不同而已。