Mai multe printf în buclă De-ca parte a inițializării, starea și actualizare

0

Problema

Ar putea cineva sa-mi explice de ce se imprimă 32 și conceptul general de cum funcționează acest lucru?

#include <stdio.h>

int main()
{
    int a=1;
    for (printf ("3"); printf ("2"); printf ("1"))

    return 0;
}
c loops printf
2021-11-23 21:56:07
2

Cel mai bun răspuns

8

Buna indentare ar face mai clare:

#include <stdio.h>

int main()
{
    int a=1;
    for (printf ("3"); printf ("2"); printf ("1"))
        return 0;
}

Așa se întâmplă următoarele:

  • a este inițializat la 1. Nu știu de ce această variabilă există, deoarece nu este niciodată folosit.
  • for execută inițializare declarație, printf("3");. Acest printuri 3.
  • for evaluează repetarea acesteia condiție, printf("2"). Acest printuri 2 și returnează numărul de caractere care au fost tipărite, care este 1.
  • Deoarece condiția este sinceră, de a intra în corpul buclei.
  • Corpul execută return 0;. Acest lucru se întoarce la main()astfel se încheie bucla.

Când bucla se termină, n-am evaluează actualizarea exprimare, printf("1"), astfel încât să nu imprimă 1. Și vom ajunge la nici o repetiție a ceva.

2021-11-23 22:04:34
0

Știi, un program începe să curgă de la stânga '{' de funcția main(), end în dreptul '}' de funcția main(), dacă nu există nici o buclă fără sfârșit.

Ca codul de spectacole, dificultatea este de a înțelege organigrama de buclă, în limbajul C.

După cum puteți vedea, sintaxa pentru bucla este:
for (initializationStatement; testExpression; updateStatement)
{
    // statements inside the body of loop
    for loop body;
}
Cum pentru bucla funcționează?

1.Inițializarea declarație este executat o singură dată.

2.Apoi, testul de expresie este evaluată. Dacă testul expresie este evaluată la false, pentru bucla este reziliat.

3.Cu toate acestea, dacă testul expresie este evaluată la true, declarații în interiorul corpului pentru bucla sunt executate, și actualizarea de exprimare este actualizat.

4.Din nou testul expresie este evaluată.

Acest proces continuă până când testul expresia este falsă. Atunci când testul expresia este falsă, bucla se termină.

Deci, pentru bucla Organigrama

enter image description here

În primul rând, Ia-ți cod ca un exemplu:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) break;
    return 0;
}
Ieșire
32

1.initializare este "printf ("3")"atunci, de imprimare:

3

2.Testul de exprimare "printf("2")", care întotdeauna adevărat, așa că de imprimare:

2

3.pentru corpul buclei "break"înseamnă că se încheie execuția buclei pentru,

nu executa actualizat expresie "printf("1")"

de asemenea, programul sari de buclă și sari pentru a "return 0;",

apoi, la sfârșitul executării acestui program.

Deci, rezultatul este

32
În al doilea rând, Ia-ți s-a schimbat codul ca un exemplu:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) ;
    return 0;
}
Ieșire
321212121212121212...121212...1212...

În mod similar,

1.initializare este "printf ("3")"atunci, de imprimare:

3

2.Testul de exprimare "printf("2")", care întotdeauna adevărat, așa că de imprimare:

2

3.pentru corpul buclei "`", gol, apoi nu fac nimic. goto actualizat expresie

"printf("1")"

4.actualizat expresie "printf("1")"atunci, de imprimare

1

5.apoi, du-te la testul de exprimare "printf("2")", care este "2.Testul

expresia "printf("2")", care întotdeauna adevărat, așa print".Pentru că

corpul buclei este de "`",gol, apoi du-te din actualizate

expresia "printf("1")" la testul de exprimare "printf("2")",

de aceea, după ce imprimarea "32"această funcție imprimă buclă infinită

"12".Și, că funcția n-end opri imprimarea "12"dacă nu

opri această funcție.

Deci, Deci, Deci ieșirea este

32121212...121212...121212...
În al treilea rând, Ia-ți recent schimbat codul ca un exemplu:
#include <stdio.h>

int main()
{
    int a=1;
    for (printf ("3"); printf ("2"); printf ("1")) 

    return 0;
}
Ieșire
32

1.programul începe să curgă de la stânga '{' de funcția main(),

asta e inițializare declarație de variabilă Temporară

"int a=1;".

Această declarație definește un "int"tastat variabilă temporară "a"și

seturi sale de valoare "1", Dar care imprima nimic!

2.apoi, programul goto pentru bucla.

3.inițializarea declarație este "printf ("3")"atunci, de imprimare

"3"și

du-te la testul de exprimare.

3

4.Testul de exprimare "printf("2")", care întotdeauna adevărat, așa că

print "2"și du-te pentru corpul buclei de exprimare.

2

5.pentru bucla de exprimare corp "return 0", expresia

"return 0"return '0în funcția main(),și să pună capăt

executarea main(), Dar imprima nimic.

Deci, rezultatul este:

32
End. Multumesc!!!
2021-11-24 07:01:53

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................