Více printf v Pro-smyčka jako součást inicializace, podmínky a aktualizace

0

Otázka

Mohl by mi někdo vysvětlit, proč se to tiskne 32 a celková koncepce, jak 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

Nejlepší odpověď

8

Správné odsazení by to jasnější:

#include <stdio.h>

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

Tak se stane následující:

  • a je inicializován na 1. Nevím, proč tato proměnná existuje, protože to je nikdy použit.
  • for provede jeho inicializace prohlášení, printf("3");. Vytiskne 3.
  • for hodnotí jeho opakování stavu, printf("2"). Vytiskne 2 a vrátí počet znaků, které byly vytištěny, což je 1.
  • Protože stav je pravdivý, jde do těla smyčky.
  • Tělo spustí return 0;. Tato výnosy z main()tedy konec smyčky.

Od smyčka končí, nikdy jsme se vyhodnocuje update výraz, printf("1"),, takže to nikdy tisků 1. A my jsme si žádné opakování, nic.

2021-11-23 22:04:34
0

Víš, program začíná od levé '{' funkce main(), end v pravém '}' z funkce main(), pokud tam je žádné nekonečné smyčky.

Jako kódu ukazuje, Vaše potíže je pochopit vývojový diagram pro smyčce v jazyce C.

Jak vidíte, syntaxe cyklu for je:
for (initializationStatement; testExpression; updateStatement)
{
    // statements inside the body of loop
    for loop body;
}
Jak pro smyčce funguje?

1.Inicializační příkaz se provede pouze jednou.

2.Pak, test je výraz vyhodnocen. Pokud test je výraz vyhodnocen na false, smyčka je ukončena.

3.Nicméně, pokud test je výraz vyhodnocen jako true, příkazy uvnitř těla cyklu for je proveden, a update výraz je aktualizován.

4.Opět test je výraz vyhodnocen.

Tento proces pokračuje, dokud testovací výraz false. Když testovací výraz false, smyčka se ukončí.

Takže, pro smyčce vývojový Diagram

enter image description here

Za prvé, Vzít svůj kód jako příklad:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) break;
    return 0;
}
Výstup
32

1.inicializace "printf ("3")"pak vytisknout:

3

2.Testovací výraz "printf("2")"to, že vždy pravda, takže tisku:

2

3.pro tělo smyčky "break"to znamená, že končí výkon pro smyčce,

nepoužívejte spustit aktualizováno výraz "printf("1")"

také, program vyskočit ze smyčky for, a skok, aby se "return 0;",

pak, na konci plnění tohoto programu.

Takže, výstup je

32
Za druhé, Vezměte si změnila kód jako příklad:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) ;
    return 0;
}
Výstup
321212121212121212...121212...1212...

Podobně

1.inicializace "printf ("3")"pak vytisknout:

3

2.Testovací výraz "printf("2")"to, že vždy pravda, takže tisku:

2

3.pro tělo smyčky "`", empty, pak se nic dělat. goto aktualizované vyjádření

"printf("1")"

4.aktualizované výraz "printf("1")"pak, tisk

1

5.pak goto test exprese "printf("2")", že je "2.Test

výraz "printf("2")", který vždy pravda, takže tisk".Protože

tělo smyčky je "`",empty, pak vždy goto z aktualizovaných

výraz "printf("1")" k testu výraz "printf("2")",

to je důvod, proč po tisku "32"že funkce vytiskne nekonečné smyčky

"12".A, že funkci nikdy neskončí zastavit tisk "12"pokud

zastavit tuto funkci.

Takže, Takže, Takže výstup je

32121212...121212...121212...
Za třetí, Vzít si nedávno změnil kód jako příklad:
#include <stdio.h>

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

    return 0;
}
Výstup
32

1.program začíná od levé '{' funkce main(),

to je inicializační prohlášení o Dočasné proměnné

"int a=1;".

Toto prohlášení definuje "int"zadali dočasné proměnné "a"a

nastaví její hodnotu na "1", Ale, že tisk nic!

2.pak, program se jít do pro smyčky.

3.inicializace prohlášení je "printf ("3")"pak, tisk

"3"a

goto test exprese.

3

4.Testovací výraz "printf("2")"to, že vždy pravda, takže

print "2"a jít do pro smyčky těla, výraz.

2

5.pro smyčky těla, výraz "return 0"výraz

"return 0"návrat '0do funkce main(),a na konci

provedení main(), Ale tisknout nic.

Takže, výstup je:

32
End. Díky!!!
2021-11-24 07:01:53

V jiných jazycích

Tato stránka je v jiných jazycích

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