内 容
- インクリメントとデクリメント
- for文
- 代入演算子
- 二重ループ
インクリメントとデクリメント
変数の値を1、2、3、4、、のようにカウントアップしたり、10、9、8、7、、のようにカウントダウンするときには、それぞれ、
a = a + 1
a = a - 1
と記述しました。
プログラム中には、このような1増やしたり1減らすという演算がよく登場することから、省略記法として下表の演算子が用意されています。
インクリメント演算子、デクリメント演算子
演算子 | 名称 | 説明 | 記述例 | 説明 |
++ | インクリメント演算子 | 変数の値を1増やす | a++または++a | aの値を1増やす |
-- | デクリメント演算子 | 変数の値を1減らす | a--または--a | aの値を1減らす |
例 incdec.c
#include <stdio.h>
int main(void)
{
int a = 1;
a++; // インクリメント a=a+1と同じ
printf("%d\n",a );
a--; // デクリメント b=b+1と同じ
printf("%d\n", a);
return 0;
}
前置インクリメントと後置インクリメント
インクリメント演算子には、その演算子を変数の前に記述する前置型と後に記述する後置型あります。前置型はその演算子を含むステートメントの処理の前で1加算されます。後置型はその演算子を含むステートメントの後で1加算されます。
prepost.c
#include <stdio.h>
int main(void)
{
int a, num;
num = 10;
printf("num++ => %d\n", num++); //後置 numの値が表示された後で1加算される
printf("++num => %d\n", ++num); //前置 1加算された後、その値が表示される
num = 10;
a = num++;
printf("a = num++ ==> a = %d num = %d\n", a,num);
num = 10;
a = ++num;
printf("a = ++num ==> a = %d num = %d\n", a,num);
return 0;
}
デクリメント演算子(--)についても前置型と後置型があり、インクリメント演算子と同様に異なるタイミングで処理されます。
for文
繰り返し画面に表示する
for文を使って、画面にメッセージを10回繰り返して表示するプログラム例for.cです。int型の変数iは、繰り返しの回数を数えあげるためのカウンタ変数です。キーワードforの直後のカッコの中には繰り返しの回数を決めるための3つの式が記述されています。先頭から「カウンタ変数の初期化」、「繰り返し条件」、「カウンタ変数のカウント」です。その後には、繰り返しの対象となる処理を波括弧{}で囲ってコードブロックを構成します。文が一つしかないときには波括弧{}は必ずしも必要ではありません。
例 for.c
#include <stdio.h>
int main(void)
{
int i;
// 初期値; 条件; カウント
for (i=1; i<=10; i++) {
printf("I love C programing.\n");
}
return 0;
}
構文:
for (カウンタ変数の初期値; 繰り返し条件; カウンタ変数の増減) {
繰り返したい処理
}
カウントダウン
for文では繰り返し処理の回数を制御するために制御変数(例えば、変数i)を使います。先の例ではこのカウンタ変数をカウントアップすることで繰り返し処理を実現しましたが、次の例ではカウンタ変数をカウントダウン、初期値10から1ずつ減ずる(Decrement)ことで繰り返し処理を実現しています。
例 countdown.c
#include <stdio.h>
int main(void)
{
int i;
//初期値; 条件; デクリメント
for (i=10; i>=1; i--) {
printf("%2d\n",i);
}
return 0;
}
for文のカッコの中の3つの記述は、先頭から「始めにiの値を10に設定」、「iの値が1以上の間繰り返す」、「毎回iの値を1減ずる」となっています。変数iを減ずるためにデクリメント演算子--が使われています。
代入演算子
1から10までの合計値を求める
for文を使って、1から10までの合計を求めてみましょう。
例 sum.c
#include <stdio.h>
int main(void)
{
int i, sum=0; //カウンタ、合計値
for (i=1; i<=10; i++) {
sum += i; //代入演算子 sum = sum + i;
}
printf("1から10までの合計 %d\n", sum);
return 0;
}
0からNまでの合計を求めるためには、
0で初期化した変数sumに、1〜Nまでの値を順番に加算していく。
sum += i は、sum = sum + i の省略形で、代入演算子と呼ぶ。
代入演算子
以下に代入演算子の一覧を示します。
表. 代入演算子
演算子 | 説明 | 記述例 | 説明 |
+= | 加算して代入 | a += 5; | a+5の結果をaに代入する(a = a+5と同じ) |
-= | 減算して代入 | a -= 5; | a-5の結果をaに代入する(a = a-5と同じ) |
*= | 乗算して代入 | a *= 5; | a*5の結果をaに代入する(a = a*5と同じ) |
/= | 除算して代入 | a /= 5; | a/5の結果をaに代入する(a = a/5と同じ) |
%= | 剰余を代入 | a %= 5; | a%5の結果をaに代入する(a = a%5と同じ) |
2重ループ
繰り返し処理を入れ子構造にする(ネスティング:nesting)することで、2重ループを構成することができます。ネストは1度だけと限らず何度も繰り返すことで多重ループを実現することもできます。
次の例は、外側のループのカウンタ変数にiを、内側のループのカウンタ変数にjを使って、内側の10回の繰り返し処理を外側の繰り返し処理で5回繰り返しています。
nest.c
#include <stdio.h>
int main(void)
{
int i,j;
for (i=0; i<5; i++) {
printf("%2d: ",i);
for (j=0; j<10; j++) {
printf("%2d",j);
}
printf("\n");
}
return 0;
}
expand_lessBack to TOP