LoginSignup
0
0

More than 1 year has passed since last update.

【C】初めてのC言語(7. for文)

Last updated at Posted at 2022-06-12

はじめに

学習環境

  • 今回はpaiza.ioのC言語のエディタを使いました。

構文

  • 以下の構文はこちらのサイトから引用したものですが、Javaと同じ構文なので覚えやすいと感じました。
for (初期化式; 継続条件式; 変化式) {
    // 継続条件式がtrueのときに繰り返す処理
}

サンプルコード

基本的なfor文の使い方

  • 以下のサンプルコードでは、カウンタ変数iを0から1ずつ増やして、計5回繰り返しています。
main.c
#include <stdio.h>
int main(void){
    for (int i=0; i<5; i++) {
        printf("%d回目のループです。\n", i+1);
    }
}
実行結果
1回目のループです。
2回目のループです。
3回目のループです。
4回目のループです。
5回目のループです。

配列との組み合わせ

  • 配列と組み合わせる場合には、配列の要素数に合わせてループさせる必要がありますが、これがJavaやC#と比べて少々厄介です。
  • C言語では{配列}.lengthのように配列の要素数を直接調べる方法がないため、sizeof演算子を使って間接的に配列の要素数を求めます。
    • sizeof(配列)で配列全体のサイズを求めた後、sizeof(配列のデータ型)で1要素分のサイズを求めて、配列全体のサイズ÷1要素分のサイズで配列の長さを求めています。
main.c
#include <stdio.h>
int main(void){
    int int_ary[8] = {0, 1, 1, 2, 3, 5, 8, 13};
    
    // 配列全体のサイズ÷1要素分のサイズで、配列の長さを求める。
    int ary_size = sizeof(int_ary) / sizeof(int);
    
    for (int i=0; i<ary_size; i++) {
        printf("%d番目の要素は%dです。\n", i+1, int_ary[i]);
    }
}
実行結果
1番目の要素は0です。
2番目の要素は1です。
3番目の要素は1です。
4番目の要素は2です。
5番目の要素は3です。
6番目の要素は5です。
7番目の要素は8です。
8番目の要素は13です。

無限ループとbreak

  • 初期化式、継続条件式、変化式を書かず、for (; ; ) {...}と書くと無限ループになります。
  • 本当に無限ループしてしまうとまずいので、以下のコードではbreakを使って100回繰り返した所でループを抜けるようにしています。
main.c
#include <stdio.h>
int main(void){
    // ループ回数のカウンタ
    int loop_cnt = 0;

    for (; ;) {
        loop_cnt++;
        if (loop_cnt==100) {
            break;
        }
    }
    
    printf("%d回ループしました。", loop_cnt);
}
実行結果
100回ループしました。

continueによる処理のスキップ

  • 任意の場所にcontinueを入れることで、以降の処理をスキップさせてループの先頭に戻すことができます。
main.c
#include <stdio.h>
int main(void){
    printf("奇数だけを出力します。\n");

    for (int i=1; i<=10; i++) {
            
        if (i%2==0) {
            continue;
        }
        
        printf("%d\n", i);
    }
}
実行結果
奇数だけを出力します。
1
3
5
7
9

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0