Qualcuno potrebbe spiegare a me perché di stampa (32 e il concetto generale di come funziona?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Qualcuno potrebbe spiegare a me perché di stampa (32 e il concetto generale di come funziona?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Rientro appropriato renderebbe più chiaro:
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Così accade quanto segue:
a
è inizializzato 1
. Non so perché questa variabile esiste, poiché non è mai utilizzato.for
esegue la sua istruzione di inizializzazione, printf("3");
. Questa stampa 3
.for
valuta la sua ripetizione condizione, printf("2")
. Questa stampa 2
e restituisce il numero di caratteri che sono stati stampati, che è 1
.return 0;
. Questo restituisce da main()
così la conclusione del ciclo.Dal momento che il ciclo termina, non abbiamo mai valuta l'aggiornamento espressione, printf("1")
, quindi non è mai stampe 1
. E abbiamo nessuna ripetizione di nulla.
Sai, un programma decorre dalla sinistra ‘{’ della funzione main(), la fine del diritto '}' della funzione main(), se non c'è un ciclo infinito.
Come il codice mostra, la Tua difficoltà è capire il diagramma di flusso del ciclo for in C language.
for (initializationStatement; testExpression; updateStatement)
{
// statements inside the body of loop
for loop body;
}
1.L'istruzione di inizializzazione viene eseguita solo una volta.
2.Quindi, l'espressione viene valutata. Se il test espressione viene valutata su false, il ciclo è terminato.
3.Tuttavia, se il test è espressione viene valutata true, istruzioni all'interno del corpo del ciclo for vengono eseguiti, e l'aggiornamento espressione è aggiornato.
4.Di nuovo l'espressione di test viene valutata.
Questo processo continua fino a quando l'espressione è falsa. Quando il test di espressione è falsa, il ciclo termina.
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
32
1.inizializzazione "printf ("3")
"poi, di stampa:
3
2.L'espressione di test "printf("2")
"sempre vero, in modo da la stampa:
2
3.per il corpo loop "break
"che significa concludere l'esecuzione del ciclo for,
non eseguire l'aggiornamento di espressione "printf("1")
"
inoltre, il programma salta fuori del ciclo for, e saltate "return 0;
",
quindi, terminare l'esecuzione di questo programma.
Così, l'uscita è
32
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) ;
return 0;
}
321212121212121212...121212...1212...
Allo stesso modo,
1.inizializzazione "printf ("3")
"poi, di stampa:
3
2.L'espressione di test "printf("2")
"sempre vero, in modo da la stampa:
2
3.per il corpo loop "`", vuota, quindi non fare nulla. goto aggiornato espressione
"printf("1")
"
4.l'espressione aggiornata "printf("1")
"allora stampa
1
5.poi, vai al test di espressione "printf("2")
", che è "2.Il test
l'espressione "printf("2")", che è sempre vero, in questo modo la stampa".Perché il
il corpo del ciclo è "`",vuoto, poi sempre goto dall'aggiornamento
l'espressione "printf("1")
" per l'espressione di test "printf("2")
",
ecco perché dopo la stampa "32
"che funzione stampa loop infinito
"12
".E, che la funzione non finiscono mai interrompere la stampa "12
"a meno che non si
interrompere la funzione.
Così, così, in Modo che l'output è
32121212...121212...121212...
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
32
1.il programma inizia a decorrere dalla sinistra ‘{’ della funzione main(),
che l'istruzione di inizializzazione della variabile Temporanea
"int a=1;
".
Questa dichiarazione definisce "unint
"digitato variabile temporanea "a
"e
imposta il suo valore "1
"Ma che stampare nulla!
2.quindi, il programma goto ciclo for.
3.l'istruzione di inizializzazione è "printf ("3")
"allora stampa
"3
"e
vai al test di espressione.
3
4.L'espressione di test "printf("2")
"sempre vero, quindi
stampa "2
"e goto ciclo for l'espressione del corpo.
2
5.il ciclo for espressione del corpo "return 0
"l'espressione
"return 0
"ritorno"0
'la funzione main(),e alla fine il
esecuzione di main(), Ma non stampare nulla.
Così, il risultato è:
32