Viac printf v Pre-slučky ako súčasť inicializácia, stav, a aktualizovať

0

Otázka

Mohol by niekto vysvetliť, prečo mi to vypíše 32 a celkovej koncepcie ako to funguje?

#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

Najlepšiu odpoveď

8

Správne odsadenie by to jasnejšie:

#include <stdio.h>

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

Takže nasledujúce deje:

  • a je inicializovaný 1. Neviem, prečo táto premenná existuje, pretože sa nikdy použité.
  • for vykonáva jeho inicializácie ziskov a strát, printf("3");. Vytlačí 3.
  • for hodnotí jej opakovaní stave, printf("2"). Vytlačí 2 a vráti počet znakov, ktoré boli vytlačené, ktorý je 1.
  • Pretože stav je truthy, ide sa do tela slučky.
  • Telo vykonáva return 0;. To sa vráti z main()teda ukončenie slučky.

Od slučky končí, nikdy sme sa hodnotí aktualizácia prejavu, printf("1"), tak to nikdy výtlačkov 1. A my si žiadne opakovanie nič.

2021-11-23 22:04:34
0

Viete, program začína plynúť od ľavej '{' z funkcie main(), konci v pravom '}' z funkcie main(), ak nie je nekonečné slučky.

Ako váš kód ukazuje, Vaše ťažkosti je pochopiť priebeh pre slučky v C jazyku.

Ako môžete vidieť, syntax pre slučky je:
for (initializationStatement; testExpression; updateStatement)
{
    // statements inside the body of loop
    for loop body;
}
Ako pre slučky funguje?

1.Inicializačný vyhlásenie sa vykoná iba raz.

2.Potom, test výraz je vyhodnotený. Ak test výraz je vyhodnotený na hodnotu false, pre slučky je ukončená.

3.Ak však test výraz vyhodnotí na true, závierke vo vnútri tela pre slučky sa vykonávajú, a aktualizovať termín je aktualizovaný.

4.Opäť test výraz je vyhodnotený.

Tento proces pokračuje, až kým test výraz je false. Pri skúške výraz je false, slučka zaniká.

Takže, pre slučky vývojový Diagram

enter image description here

Po prvé, Zverte váš kód ako príklad:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) break;
    return 0;
}
Výstup
32

1.inicializácia je "printf ("3")"a potom, tlač:

3

2.Test výraz "printf("2")", ktorý je vždy pravdivý, tak tlače:

2

3.pre telo slučky "break"znamená to, že sa končí vykonaním pre slučky,

nie vykonanie aktualizovaný výraz "printf("1")"

tiež, program skočiť z pre slučky, a skok "return 0;",

potom, ukončiť realizáciu tohto programu.

Tak, výstup je

32
Po druhé, Vezmite si zmenil kód ako príklad:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) ;
    return 0;
}
Výstup
321212121212121212...121212...1212...

Podobne,

1.inicializácia je "printf ("3")"a potom, tlač:

3

2.Test výraz "printf("2")", ktorý je vždy pravdivý, tak tlače:

2

3.pre telo slučky "`", prázdne, potom nič. goto aktualizovaný výraz

"printf("1")"

4.aktualizované vyjadrenie "printf("1")"a potom, tlač

1

5.potom goto test vyjadrenie "printf("2")", že je "2.Test

výraz "printf("2")", ktoré vždy pravda, tak tlače".Pretože

telo slučky je "`",prázdne, potom vždy goto z aktualizovanej

výraz "printf("1")" na test vyjadrenie "printf("2")",

to je dôvod, prečo po vytlačení "32"že funkcia vytlačí nekonečnej slučke

"12".A túto funkciu nikdy koniec zastaviť tlač "12"ak ste

zastaviť túto funkciu.

Tak, Tak, Tak, výstup je

32121212...121212...121212...
Po tretie, Vezmite si nedávno zmenila zákonník v znení príklad:
#include <stdio.h>

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

    return 0;
}
Výstup
32

1.program začína plynúť od ľavej '{' z funkcie main(),

to je inicializácia vyhlásenie Dočasnej premennej

"int a=1;".

Vyhlásenie, že definuje "int"napísal dočasnej premennej "a"a

nastaví jeho hodnotu na "1", Ale že tlačiť nič!

2.potom, program goto pre slučky.

3.inicializačný vyhlásenie "printf ("3")"a potom, tlač

"3"a

goto test prejavu.

3

4.Test výraz "printf("2")", ktorý je vždy pravdivý, tak

tlačiť "2"a goto pre slučky telo prejavu.

2

5.pre slučky telo vyjadrenie "return 0"termín

"return 0"vrátenia"0"do funkcie main(),a koniec

výkon main(), Ale tlače nič.

Tak, výstup je:

32
Ukončiť. Vďaka!
2021-11-24 07:01:53

V iných jazykoch

Táto stránka je v iných jazykoch

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