Quelqu'un pourrait-il m'expliquer pourquoi il imprime 32 et le concept global de la façon dont cela fonctionne?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Quelqu'un pourrait-il m'expliquer pourquoi il imprime 32 et le concept global de la façon dont cela fonctionne?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Bonne indentation rendrait plus clair:
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
De sorte que le suivant se produit:
a
est initialisé à 1
. Je ne sais pas pourquoi cette variable existe, comme il n'est jamais utilisé.for
elle exécute son instruction d'initialisation, printf("3");
. Cette affiche 3
.for
évalue sa répétition condition, printf("2")
. Cette affiche 2
et renvoie le nombre de caractères qui ont été imprimées, ce qui est 1
.return 0;
. Cela renvoie d' main()
, bouclant ainsi la boucle.Étant donné que la boucle se termine, nous n'avons jamais évalue la mise à jour de l'expression, printf("1")
, de sorte qu'il imprime jamais 1
. Et nous ne recevons aucune répétition de quoi que ce soit.
Vous le savez, un programme commence à courir à partir de la gauche ‘{’ de la fonction main () à la fin dans le droit '}' de la fonction main(), si il n'y a pas de boucle sans fin.
Comme votre montre, Votre difficulté est de comprendre le schéma de la boucle for en langage C.
for (initializationStatement; testExpression; updateStatement)
{
// statements inside the body of loop
for loop body;
}
1.L'instruction d'initialisation est exécutée qu'une seule fois.
2.Ensuite, le test de l'expression est évaluée. Si le test d'expression est évaluée à false, la boucle est terminée.
3.Cependant, si le test d'expression est évaluée à true, les instructions à l'intérieur du corps de la boucle sont exécutées, et la mise à jour d'expression est mise à jour.
4.De nouveau le test de l'expression est évaluée.
Ce processus continue jusqu'à ce que l'expression de test est faux. Lorsque le test d'expression est false, la boucle se termine.
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
32
1.initialisation "printf ("3")
"puis, d'impression:
3
2.L'expression de test "printf("2")
", c'est toujours vrai, à imprimer:
2
3.pour le corps de la boucle "break
", qui signifie la fin de l'exécution de la boucle for,
ne pas exécuter la mise à jour de l'expression "printf("1")
"
aussi, le programme de sauter en dehors de la boucle for, et le saut à l' "return 0;
",
ensuite, la fin de l'exécution de ce programme.
Donc, la sortie est
32
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) ;
return 0;
}
321212121212121212...121212...1212...
De même,
1.initialisation "printf ("3")
"puis, d'impression:
3
2.L'expression de test "printf("2")
", c'est toujours vrai, à imprimer:
2
3.pour le corps de la boucle "`", vide, puis ne rien faire. goto la mise à jour de l'expression
"printf("1")
"
4.la mise à jour de l'expression "printf("1")
"puis, impression
1
5.ensuite, passez à l'essai de l'expression "printf("2")
"c'est le "2.Le test
l'expression "printf("2")", c'est toujours vrai, donc "print".Parce que le
le corps de la boucle est "`",vide, toujours goto de la mise à jour
l'expression "printf("1")
" à l'épreuve de l'expression "printf("2")
",
c'est pourquoi après l'impression "32
"cette fonction imprime boucle infinie
"12
".Et, cette fonction ne finissent jamais arrêter l'impression "12
"à moins que vous
arrêter cette fonction.
Donc, Donc, Donc, la sortie est
32121212...121212...121212...
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
32
1.le programme commence à courir à partir de la gauche ‘{’ de la fonction main(),
c'est l'instruction d'initialisation de variable Temporaire
"int a=1;
".
Cette déclaration définit un "int
"tapé à la variable temporaire "a
"et
définit sa valeur "1
", Mais que l'impression de rien!
2.ensuite, le programme goto pour la boucle.
3.l'instruction d'initialisation est "printf ("3")
"puis, impression
"3
"et
goto, l'expression de test.
3
4.L'expression de test "printf("2")
", c'est toujours vrai, donc
print "2
"et goto la boucle de l'expression du corps.
2
5.la boucle de l'organe d'expression "return 0
"l'expression
"return 0
"le retour"0
"pour la fonction main(),et à la fin de la
l'exécution de la méthode main(), Mais n'affichera rien.
Donc, la sortie est:
32