Maison > développement back-end > Tutoriel C#.Net > Une boucle for exécute-t-elle d'abord l'instruction du corps de la boucle, puis évalue-t-elle l'expression ?

Une boucle for exécute-t-elle d'abord l'instruction du corps de la boucle, puis évalue-t-elle l'expression ?

青灯夜游
Libérer: 2020-07-23 14:53:45
original
25542 Les gens l'ont consulté

Non, la boucle for juge d'abord l'expression puis exécute l'instruction du corps de la boucle. La forme générale est "for (expression 1; expression 2; expression 3) {loop body}" ; exécutez d'abord "expression 1" puis exécutez "expression 2", si sa valeur est vraie (non-0), puis exécutez le corps de la boucle, sinon terminez la boucle ; exécutez "expression 3" après avoir exécuté le corps de la boucle.

Une boucle for exécute-t-elle d'abord l'instruction du corps de la boucle, puis évalue-t-elle l'expression ?

La forme générale d'une boucle for est :

for(表达式1; 表达式2; 表达式3){
    语句块
}
Copier après la connexion

Son processus d'exécution est :

1) Exécutez d'abord "Expression 1".

2) Exécutez ensuite "expression 2". Si sa valeur est vraie (non-0), alors exécutez le corps de la boucle, sinon terminez la boucle.

3) Exécutez "expression 3" après avoir exécuté le corps de la boucle.

4) Répétez les étapes 2) et 3) jusqu'à ce que la valeur de "expression 2" soit fausse, puis terminez la boucle.

Dans les étapes ci-dessus, 2) et 3) sont une boucle et seront exécutées à plusieurs reprises. La fonction principale de l'instruction for est d'exécuter en continu les étapes 2) et 3).

"Expression 1" n'est exécutée que lors de la première boucle et ne sera plus exécutée à l'avenir. Cela peut être considéré comme une instruction d'initialisation. "Expression 2" est généralement une expression relationnelle, qui détermine s'il faut continuer la boucle suivante, appelée "condition de boucle". "Expression 3" est souvent une expression avec une opération d'incrémentation ou de décrémentation, de sorte que la condition de boucle devient progressivement "faux".

Le processus d'exécution de la boucle for peut être représenté par la figure suivante :

Une boucle for exécute-t-elle dabord linstruction du corps de la boucle, puis évalue-t-elle lexpression ?

Analysons « calculer le addition de 1 au code "somme de 100":

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

Résultat d'exploitation:

5050
Copier après la connexion

Analyse du code:

1) Lors de l'exécution de l'instruction for, attribuez d'abord une valeur initiale à i 1. Déterminez si i<=100 est vrai car i=1 et i<=100 sont vrais à ce moment, le corps de la boucle est exécuté ; Une fois l’exécution du corps de la boucle terminée (la valeur de sum est 1), i++ est à nouveau calculé.

2) Lors de la deuxième boucle, la valeur de i est 2, i<=100 est établi et le corps de la boucle continue d'être exécuté. Une fois l’exécution du corps de la boucle terminée (la valeur de sum est 3), i++ est à nouveau calculé.

3) Répétez l'étape 2) jusqu'à la 101ème boucle. À ce moment, la valeur de i est 101, et i<=100 n'est pas vrai, donc la boucle se termine.

De là, nous pouvons résumer la forme générale de la boucle for :

for(初始化语句; 循环条件; 自增或自减){
    语句块
}
Copier après la connexion

Les trois expressions dans la boucle for

" dans la boucle for "Expression 1 (condition d'initialisation)", "Expression 2 (condition de boucle)" et "Expression 3 (auto-incrémentation ou auto-décrémentation)" sont toutes facultatives et peuvent être omises (mais le point-virgule ; doit être conservé).

1) Modifiez le code pour "somme de 1 à 100" et omettez "expression 1 (condition d'initialisation)" :

int i = 1, sum = 0;
for( ; i<=100; i++){
    sum+=i;
}
Copier après la connexion

Comme vous pouvez le voir, déplacez i=1 vers pour en dehors de la boucle.

2) "Expression 2 (condition de boucle)" est omise. Si aucun autre traitement n'est effectué, elle deviendra une boucle infinie. Par exemple :

for(i=1; ; i++) sum=sum+i;
Copier après la connexion

équivaut à :

i=1;
while(1){
    sum=sum+i;
    i++;
}
Copier après la connexion

La boucle dite infinie signifie que la condition de boucle est toujours vraie et que la boucle continuera et ne se terminera jamais. Les boucles infinies sont très préjudiciables au programme et doivent être évitées.

3) Si "expression 3 (auto-incrémentation ou auto-décrémentation)" est omise, les variables dans "expression 2 (condition de boucle)" ne seront pas modifiées. Dans ce cas, des variables modifiées peuvent être ajoutées. à l'instruction du corps de la boucle. Par exemple :

for( i=1; i<=100; ){
    sum=sum+i;
    i++;
}
Copier après la connexion

4) "Expression 1 (instruction d'initialisation)" et "Expression 3 (auto-incrémentation ou auto-décrémentation)" sont omises. Par exemple :

for( ; i<=100 ; ){
    sum=sum+i;
    i++;
}
Copier après la connexion

équivaut à :

while(i<=100){
    sum=sum+i;
    i++;
}
Copier après la connexion

5) 3 expressions peuvent être omises en même temps. Par exemple :

for( ; ; )  语句
Copier après la connexion

est équivalent à :

while(1)  语句
Copier après la connexion

6) "Expression 1" peut être une instruction d'initialisation ou d'autres instructions. Par exemple :

for( sum=0; i<=100; i++ )  sum=sum+i;
Copier après la connexion

7) "Expression 1" et "Expression 3" peuvent être une expression simple ou une expression virgule.

for( sum=0,i=1; i<=100; i++ )  sum=sum+i;
Copier après la connexion

ou :

for( i=0,j=100; i<=100; i++,j-- )  k=i+j;
Copier après la connexion

8) "Expression 2" est généralement une expression relationnelle ou une expression logique, mais elle peut aussi être une valeur numérique ou un caractère du moment que sa valeur est. différent de zéro, le corps de la boucle sera exécuté. Par exemple :

for( i=0; (c=getchar())!=&#39;\n&#39;; i+=c );
Copier après la connexion

Autre exemple :

for( ; (c=getchar())!=&#39;\n&#39; ; )
    printf("%c",c);
Copier après la connexion

Recommandations associées : "Tutoriel en langage C"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal