++,減分演算子 --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までの和です。