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

青灯夜游
リリース: 2020-07-23 14:53:45
オリジナル
25498 人が閲覧しました

いいえ、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 にします。i<=100 が true かどうかを判断します。この時点では i=1 および i<=100 が true であるため、ループ本体が実行されます。ループ本体の実行終了後(sumの値が1になる)、再度iを計算します。

2) 2 番目のループでは、i の値は 2 で、i<=100 が確立され、ループ本体が実行され続けます。ループ本体の実行終了後(sumの値が3)、再度iを計算します。

3) 101 回目のループまで 2) を繰り返しますが、この時点では i の値は 101 であり、i<=100 は成立しないのでループは終了します。

これから、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート