ホームページ  >  記事  >  バックエンド開発  >  for ループは最初にループ本体ステートメントを実行してから式を評価しますか?

for ループは最初にループ本体ステートメントを実行してから式を評価しますか?

青灯夜游
青灯夜游オリジナル
2020-07-23 14:53:4525388ブラウズ

いいえ、for ループは最初に式を判断してから、ループ本体のステートメントを実行します。一般的な形式は「for (式 1; 式 2; 式 3) {ループ本体}」です。最初に「式 1」を実行し、次に「式 2」を実行し、値が true (0 以外) の場合は、ループ本体、そうでない場合はループを終了; ループ本体を実行した後、「式 3」を実行します。

for ループは最初にループ本体ステートメントを実行してから式を評価しますか?

#for ループの一般的な形式は次のとおりです:

for(表达式1; 表达式2; 表达式3){
    语句块
}

その実行プロセスは次のとおりです:

1) 最初に「式 1」を実行します。

2) 「式 2」を再度実行し、値が true (0 以外) の場合はループ本体を実行し、それ以外の場合はループを終了します。

3) ループ本体の実行後、「式3」を実行します。

4) 「式 2」の値が false になるまで手順 2) と 3) を繰り返し、ループを終了します。

上記の手順の 2) と 3) はループになっており、繰り返し実行されますが、for ステートメントの主な機能は、手順 2) と 3) を継続的に実行することです。

「式 1」は最初のループ中にのみ実行され、今後は実行されません。これは初期化ステートメントと考えることができます。 「式2」は一般に、次のループを継続するかどうかを決定する関係式であり、これを「ループ条件」と呼ぶ。 「式 3」は、多くの場合、インクリメントまたはデクリメント演算を伴う式であるため、ループ条件は徐々に「真ではない」になります。

for ループの実行プロセスは次の図で表すことができます。

for ループは最初にループ本体ステートメントを実行してから式を評価しますか?

「計算」を分析してみましょう。 1 から 100 までの加算と" コード:

#include <stdio.h>
int main(){
    int i, sum=0;
    for(i=1; i<=100; i++){
        sum+=i;
    }
    printf("%d\n",sum);
    return 0;
}

実行結果:


5050

コード分析:

1) for ステートメントを実行するとき、最初に初期値を i 1 にします。i2) 2 番目のループでは、i の値は 2 で、i3) 101 回目のループまで 2) を繰り返しますが、この時点では i の値は 101 であり、iこれから、for ループの一般的な形式を要約できます:

for(初始化语句; 循环条件; 自增或自减){
    语句块
}

for ループ内の 3 つの式

for ループ内の「式 1 (初期化条件)」、「式 2 (ループ条件)」、および「式 3 (自己インクリメントまたは自己デクリメント)」はすべてオプションで省略できます (ただし、セミコロン

; は必須です)保持されます)。

1) 「1 から 100 までの合計」のコードを変更し、「式 1 (初期化条件)」を省略します。

int i = 1, sum = 0;
for( ; i<=100; i++){
    sum+=i;
}

i=1 であることがわかります。 for ループの外に移動されました。

2) 「式2(ループ条件)」を省略した場合、何も処理をしないと無限ループとなります。例:

for(i=1; ; i++) sum=sum+i;

は次と同等です:

i=1;
while(1){
    sum=sum+i;
    i++;
}

いわゆる無限ループとは、ループ条件が常に true であり、ループが継続して終了しないことを意味します。無限ループはプログラムにとって非常に有害なので、回避する必要があります。

3) 「式3(自己インクリメントまたは自己デクリメント)」を省略した場合、「式2(ループ条件)」の変数は変更されません。ループ本体ステートメントに追加されます。例:

for( i=1; i<=100; ){
    sum=sum+i;
    i++;
}

4) 「式1(初期化文)」と「式3(自己インクリメントまたは自己デクリメント)」は省略されます。例:

for( ; i<=100 ; ){
    sum=sum+i;
    i++;
}

while(i<=100){
    sum=sum+i;
    i++;
}

5 と同等です) 3 つの式を同時に省略できます。例:

for( ; ; )  语句

は次と同等です:

while(1)  语句

6) 「式 1」は初期化ステートメントまたは他のステートメントにすることができます。例:

for( sum=0; i<=100; i++ )  sum=sum+i;

7) 「式 1」と「式 3」は、単純な式またはカンマ式にすることができます。

for( sum=0,i=1; i<=100; i++ )  sum=sum+i;

または:

for( i=0,j=100; i<=100; i++,j-- )  k=i+j;

8) 「式 2」は通常、関係式または論理式ですが、数値や文字を使用することもできます。 -zero、ループ本体が実行されます。例:

for( i=0; (c=getchar())!=&#39;\n&#39;; i+=c );

別の例:

for( ; (c=getchar())!=&#39;\n&#39; ; )
    printf("%c",c);

関連する推奨事項: 「

c 言語チュートリアル

以上がfor ループは最初にループ本体ステートメントを実行してから式を評価しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。