Alguém poderia me explicar por que ele imprime 32 e o conceito geral de como isso funciona?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Alguém poderia me explicar por que ele imprime 32 e o conceito geral de como isso funciona?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Adequada recuo seria torná-lo mais claro:
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
Então, acontece o seguinte:
a
é inicializado para 1
. Eu não sei por que essa variável existe, uma vez que ele nunca usou.for
executa a sua instrução de inicialização, printf("3");
. Esta função imprime 3
.for
avalia a sua condição de repetição, printf("2")
. Esta função imprime 2
e retorna o número de caracteres que foram impressas, o que é 1
.return 0;
. Este retorna do main()
, terminando assim o ciclo.Desde o loop termina, nós nunca avalia a expressão de atualização, printf("1")
, para que ele nunca imprime 1
. E temos nenhuma repetição de qualquer coisa.
Você sabe, um programa começa a ser executado a partir da esquerda '{' da função main(), end no direito '}' da função main(), se não houver um loop infinito.
Como o seu código mostra, Sua dificuldade é entender o fluxograma do ciclo for na linguagem C.
for (initializationStatement; testExpression; updateStatement)
{
// statements inside the body of loop
for loop body;
}
1.A instrução de inicialização é executada apenas uma vez.
2.Em seguida, a expressão de teste é avaliada. Se a expressão de teste é avaliada como false, o loop for é encerrado.
3.No entanto, se a expressão de teste é avaliada como true, instruções dentro do corpo do loop são executadas, e a expressão de atualização é atualizado.
4.Novamente a expressão de teste é avaliada.
Este processo continua até que a expressão de teste for falsa. Quando a expressão de teste for falsa, o loop termina.
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
32
1.a inicialização é "printf ("3")
", em seguida, imprimir:
3
2.A expressão de teste "printf("2")
", que sempre é verdadeira, e para imprimir:
2
3.para o corpo de loop "break
", que significa acabar com a execução do loop for,
não executar atualizado expressão "printf("1")
"
além disso, o programa salto para fora do loop for, e ir para "return 0;
",
em seguida, terminar a execução do programa.
Então, a saída é
32
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) ;
return 0;
}
321212121212121212...121212...1212...
Da mesma forma,
1.a inicialização é "printf ("3")
", em seguida, imprimir:
3
2.A expressão de teste "printf("2")
", que sempre é verdadeira, e para imprimir:
2
3.para o corpo de loop, "`", vazia, então não fazer nada. ir para a expressão atualizado
"printf("1")
"
4.atualizado expressão "printf("1")
", em seguida, imprimir
1
5.em seguida, ir para a expressão de teste "printf("2")
", que é "2.O teste
a expressão "printf("2")", que sempre verdadeira, de modo a imprimir".Porque o
o corpo do loop é "`",vazio e em seguida, sempre goto a partir atualizado
a expressão "printf("1")
" para a expressão de teste "printf("2")
",
que é por isso que após a impressão "32
"essa função imprime loop infinito
"12
".E, que nunca função da parada de extremidade de impressão "12
"a menos que você
parar essa função.
Então, Então, Então a saída é
32121212...121212...121212...
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
32
1.o programa começa a ser executado a partir da esquerda '{' da função main(),
essa é a instrução de inicialização de variável Temporária
"int a=1;
".
Essa instrução define um "int
"digitado variável temporária "a
"e
define o valor para "1
", Mas que imprimir nada!
2.em seguida, o programa goto loop for.
3.a instrução de inicialização é "printf ("3")
", em seguida, imprimir
"3
"e
ir para a expressão de teste.
3
4.A expressão de teste "printf("2")
", que sempre é verdadeira, então
print "2
"e goto loop expressão corporal.
2
5.o corpo do loop de expressão "return 0
"a expressão
"return 0
"return '0
"para a função main(),e no final o
execução de main(), Mas imprimir nada.
Então, a saída é:
32