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;
}
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;
}
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
.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.
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.
for (initializationStatement; testExpression; updateStatement)
{
// statements inside the body of loop
for loop body;
}
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čí.
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
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
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) ;
return 0;
}
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...
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
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 '0
do funkce main(),a na konci
provedení main(), Ale tisknout nic.
Takže, výstup je:
32