發新話題

C++ Gossip 入門基礎 - 遞增、遞減、指定 運算

C++ Gossip 入門基礎 - 遞增、遞減、指定 運算

在程式中對變數遞增1或遞減1是很常見的運算,例如:

int i = 0;
i = i + 1;
cout << i << endl;
i = i - 1;
cout << i << endl;


這段程式會分別顯示出1與0兩個數,您也可以這麼寫這個程式:

int i = 0;
cout << ++i << endl;
cout << --i << endl;


其中寫在變數 i 之前的++與--就是C++的「遞增運算子」(Increment operator)與「遞減運算子」(Decrement operator),當它們撰寫在變數之前時,其作用就相當於將變數遞增1與遞減1:

++i;    // i = i + 1;
--i;      // i = i - 1;


您可以將遞增或遞減運算子撰寫在變數之前或變數之後,但其實兩者是有差別的,將遞增(遞減)運算子撰寫在變數前時,表示先將變數的值加(減)1,然後再傳回變數的值,將遞增(遞減)運算子撰寫在變數之後,表示先傳回變數值,然後再對變數加(減)1,例如:

int i = 0;
int num = 0;
num = ++i;   // 相當於i = i + 1; num = i;
cout << num << endl;
num = --i;    // 相當於i = i - 1; num = i;
cout << num << endl;


在這段程式中,num的值會前後分別顯示為1與0,再看看下面這段:

int i = 0;
int num = 0;
num = i++;    // 相當於num = i; i = i + 1;
cout << num << endl;
num = i--;     // 相當於 num = i; i = i - 1;
cout << num << endl;


在這段程式中,num的值會顯示前後分別為0與1。

接下來看「指定運算子」(Assignment operator),到目前為止我們只看過一個指定運算子,也就是=這個運算子,事實上指定運算子還有以下的幾個:


運算子例子說明
+=a += b a = a + b
-=a -= ba = a - b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b
&=a &= ba = a & b
|=a |= ba = a | b
^=a ^= ba = a ^ b
<<=a <<= ba = a << b
>>=a >>= ba = a >> b


就單一個陳述而言,使用++、--或指定運算子是還算可以理解,但與其它陳述結合時可就得考慮一下,例如:

int i = 5;
arr[--i %= 10] = 10;


像這樣的式子,i 是多少,以及陣列的指定索引位置在哪可就得想一下了(有興趣算一下的話,i會是4,而陣列的指定索引也是4),總之,如何使用與何時使用,自己得拿捏著點。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。