法大奥山研究室

 previous  contents

7.6. 増分演算子 ++,減分演算子 --


 B言語から受け継いだ省略形の一つに,和算,減算に対するものがあります。

■増分演算子(インクリメント・オペレータ, Increment Operator)
++xx を参照前に 1 を加算
x++x を参照後に 1 を加算
■減分演算子(デクリメント・オペレータ, Decrement Operator)
--xx を参照前に 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;
}

この例は,++xx++ の差を示したものです。実行結果は次の通りです。

m = 5, n = 6
m = 6, n = 6

n++ は,m に代入後1増えます。一方,++nn が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までの和です。


 previous  contents