++
,減分演算子 --
B言語から受け継いだ省略形の一つに,和算,減算に対するものがあります。
■増分演算子(インクリメント・オペレータ, Increment Operator) | |
++x | x を参照前に 1 を加算 |
x++ | x を参照後に 1 を加算 |
■減分演算子(デクリメント・オペレータ, Decrement Operator) | |
--x | x を参照前に 1 を減算 |
x-- | x を参照後に 1 を減算 |
オペランドは実数型,ポインタ型,かつ,変更可能な左辺値に限る。
変更可能な左辺値(Modifiable Lvalue)とは,配列型とconst-修飾型(いずれも後出)を除くオブジェクト型の式を指します。「4. 実数型オブジェクト」で見た変数は,すべて「変更可能な左辺値」です。
/* Example 7.8 */ #include <stdio.h> int main(void) { int m = 0, n = 5; m = n++; printf("m = %d, n = %d\n", m, n); n = 5; m = ++n; printf("m = %d, n = %d\n", m, n); return 0; }
この例は,++x
と x++
の差を示したものです。実行結果は次の通りです。
m = 5, n = 6 m = 6, n = 6
n++
は,m
に代入後1増えます。一方,++n
は n
が1増えた後に m
に代入されます。
増分,減分演算子は,for
文などの繰り返し文に使われます。例えば,
int i; for(i = 0; i < 10; i++) 文
の場合,繰り返しの初期条件が i = 0
,繰り返す条件が i < 10
であり,これが真の場合(7.4. 関係演算子を参照)文 を実行し,その後,条件変更 i++
を行います。条件変更 i++
の ++
は増分演算子です。
/* Example 7.9 */ #include <stdio.h> int main(void) { int sum = 0; int i; for (i = 1; i <= 10; i++) sum = sum + i; printf("sum = %d\n", sum); return 0; }
ソース内の
sum = sum + i;
は「式文」に属す文であり,for
文はこの文を条件 i <= 10
が真である限り実行します。
実行結果です。
sum = 55
1から10までの和です。