Duvida em C

Myself*

Power Member
Pessoal... Tenho uma duvida.​

Sem efectuar testes, como explico resultado destas instruções? Ajudem-me.

//a.

j = 0;

while​
(j<10) printf("-> %i \n",j++);

//b.

j = 0;

while​
(j<10); printf("-> %i \n",j++);

//c.

j = 0;

while (j<10) {} printf("-> %i \n",j++);
 
Chama-se ir as aulas.... Se eu mandasse em Portugal (ou seja, nesta ***** toda) reprovava um por um, porque pessoas que querem que os outros façam os trabalhos não merecem que lhes ofereçam a qualificação, se me faço entender...
 
:mad: É uma dúvida... Não estou a pedir k me façam o exercicio. Eu vou as aulas. No entanto, nao consigo resolver este problema, porque não percebo a diferença k faz as {} ou o ; nas alineas!
 
Devias ter colocado essa duvida no inicio então, porque não foi isso que pediste/perguntaste.

O ; significa que estas a finalizar uma "linha" de instrução. Ou seja, printf("ola"); significa que a instrução acabou ali no ; e a seguir podes colocar logo outra.
Podes colocar ; em todo o lado que é valido, se colocares a finalizar um loop (ciclo) a instrução vai ser vazia, ou seja, o loop processa todo mas não faz nada porque a instrução é vazia.

Colocares {} significa que estas a criar um bloco de instruções, o facto do bloco estar assim deve estar a confundir-te... é a mesma coisa que:

j = 0;

while (j<10) {
}
printf("-> %i \n",j++);

Ou seja, o while não tem instruções, como necessitas de incrementar o j até ser >= 10 nunca vais sair do loop, entras portanto em loop infinito e nunca vais entrar no printf().
 
Devias ter colocado essa duvida no inicio então, porque não foi isso que pediste/perguntaste.

O ; significa que estas a finalizar uma "linha" de instrução. Ou seja, printf("ola"); significa que a instrução acabou ali no ; e a seguir podes colocar logo outra.
Podes colocar ; em todo o lado que é valido, se colocares a finalizar um loop (ciclo) a instrução vai ser vazia, ou seja, o loop processa todo mas não faz nada porque a instrução é vazia.

Colocares {} significa que estas a criar um bloco de instruções, o facto do bloco estar assim deve estar a confundir-te... é a mesma coisa que:

j = 0;

while (j<10) {
}
printf("-> %i \n",j++);

Ou seja, o while não tem instruções, como necessitas de incrementar o j até ser >= 10 nunca vais sair do loop, entras portanto em loop infinito e nunca vais entrar no printf().

Correcção:

while (j<10) {
printf("-> %i \n",j++);
}

Colocaste mal as chavetas.
 
Peço desculpa, nem li aquela parte do enunciado :lol: ao ler aquilo tive logo o impulso de dizer que estaria errado, quando na verdade o que tu querias era demonstrar isso.

My bad
 
Back
Topo