#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
Alguém pode explicar como isso funciona? Por que faz isso de impressão de 32? Quando eu remover o freio é loop infinito e imprime 12?
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
Alguém pode explicar como isso funciona? Por que faz isso de impressão de 32? Quando eu remover o freio é loop infinito e imprime 12?
Primeiro, printf ("3")
é executada, assim ele imprime 3
. Em seguida, printf("2")
é executada, impressão 2
. Porque printf()
's valor de retorno é o número de caracteres que imprime, que, neste caso, é 1
e porque 1
é um valor diferente de zero, o ciclo continua no corpo. A primeira instrução do corpo é break
, ou seja, para sair do loop. Assim, o loop termina. Assim, o resultado na tela é 32
printf("3")
é chamado quando o loop for inicializa.
printf("2")
é chamado para ver se a iteração do loop deve terminar.
printf() retorna o número de caracteres que ela imprime, que é de 1 em ambos os casos, o ciclo decide executar.
O corpo do loop é simplesmente break
, de modo que o ciclo termina naquele ponto, e o programa termina.