Czy może mi ktoś wytłumaczyć, dlaczego drukuje 32 i ogólną koncepcję tego, jak to działa?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Czy może mi ktoś wytłumaczyć, dlaczego drukuje 32 i ogólną koncepcję tego, jak to działa?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Prawidłowy odstęp będzie bardziej czytelny:
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Tak więc, występuje następujący:
a
jest inicjowany do 1
. Nie wiem, dlaczego ta zmienna istnieje, tak jak ona nigdy nie była używana.for
wykonuje swoją instrukcję inicjalizacji, printf("3");
. To drukuje 3
.for
ocenia jego warunek powtórzenia, printf("2")
. To drukuje 2
i zwraca liczbę wydrukowanych znaków, która jest równa 1
.return 0;
. To zwraca z main()
tym samym kończąc cykl.Ponieważ cykl się kończy, nigdy nie oceniamy wyrażenie aktualizacji, printf("1")
dlatego nigdy nie jest drukowana 1
. I nie otrzymujemy żadnego powtarzania czegokolwiek.
Wiesz, że program zaczyna działać po lewej stronie " {"funkcji main(), kończy się po prawej stronie"} " funkcji main(), jeśli nie ma nieskończonej pętli.
Jak pokazuje swój kod, twoja trudność polega na tym, aby zrozumieć schemat blokowy pętli for w C.
for (initializationStatement; testExpression; updateStatement)
{
// statements inside the body of loop
for loop body;
}
1.Operator inicjalizacji jest wykonywana tylko raz.
2.Następnie obliczane jest wyrażenie testowe. Jeśli test wyrażenie jest oceniane jako fałszywy, pętla for jest zakończona.
3.Jednak, jeśli test wyrażenie jest oceniane jako prawdziwe, wykonywane są instrukcje wewnątrz pętli for i aktualizowane wyrażenie update.
4.Ponownie obliczane jest wyrażenie testowe.
Proces ten trwa do momentu, aż testową wyrażenie nie będzie fałszywe. Kiedy testową wyrażenie ma wartość false, pętla kończy się.
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
32
1.inicjalizacja-to "printf ("3")
", a następnie wydrukuj:
3
2.Testowe wyrażenie "printf("2")
"to zawsze jest to prawda, tak, że można drukować:
2
3.dla pętli ciała "break
"to oznacza zakończenie wykonywania pętli for,
nie należy zaktualizowane wyrażenie "printf("1")
"
ponadto, program wyskakuje z pętli for i przechodzi do "return 0;
",
następnie wykonuj tego programu.
Więc wynik jest taki
32
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) ;
return 0;
}
321212121212121212...121212...1212...
Podobnie
1.inicjalizacja-to "printf ("3")
", a następnie wydrukuj:
3
2.Testowe wyrażenie "printf("2")
"to zawsze jest to prawda, tak, że można drukować:
2
3.dla pętli ciała "`", puste, nic nie rób. przejdź do odnowionego słowach
"printf("1")
"
4.zaktualizowane wyrażenie "printf("1")
", a następnie wydrukuj
1
5.następnie przejdź do testowego słowach "printf("2")
", czyli " 2.Test
wyrażenie "printf("2")", to zawsze jest to prawda, dlatego drukuj".Bo
ciało cyklu "`",jest puste, a następnie zawsze przechodzi z zaktualizowanego
wyrażenie "printf("1")
"do testowego słowach "printf("2")
",
dlatego po wydrukowaniu "32
"ta funkcja wyświetla nieskończoną pętlę
"12
".I ta funkcja nigdy nie przestanie drukować".12
"jeśli tylko ty
zatrzymaj tę funkcję.
Tak więc, więc, więc wynik jest taki
32121212...121212...121212...
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
32
1.program zaczyna działać z lewej " {"funkcji main(),
to operator inicjalizacji zmiennej tymczasowej
"int a=1;
".
To stwierdzenie określa "int
"narzędzie do tymczasowa zmienna "a
"i
ustawia jego wartość jest równa "1
"Ale to nic nie drukuje!
2.następnie program przechodzi do pętli for.
3.operator inicjalizacji "printf ("3")
", a następnie wydrukuj
"3
"i
przejdź do testowego słowach.
3
4.Testowe wyrażenie "printf("2")
"to zawsze jest to prawda, tak, że
drukowanie "2
"i przejdź do ekspresji ciała dla cyklu.
2
5.wyrażenie ciała pętli for "return 0
"wyrażenie
"return 0
"zwrot "0
'do funkcji main (), a następnie zakończ
wykonanie main(), ale nic nie drukuje.
Tak więc, wynik jest taki:
32