Qualquer uma das três expressões de um laço for pode ser omitida, embora os ponto-e-vírgulas devam permanecer.
Se a expressão de inicialização ou a de incremento for omitida, será simplesmente desconsiderada. Se a condição de teste não estiver presente, serã considerada permanentemente verdadeira.
/* Codifica a entrada digitada */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> /* Para getch() */
int main()
{
unsigned char ch;
for(; (ch-getch()) != 'X';)
printf("%c", ch +1);
printf("\n");
system("PAUSE");
return 0;
}
Note que colocamos parênteses extras envolvendo a expressão de atribuição (ch = getch()). Esses parênteses são realmente necessários, pois a precedência de != é maior que a de =; isso significa que, na falta dos parênteses, o teste relaciona != será feito antes da atribuição e a expressão será equivalente a:
ch = (getch() != 'X')
e ch terá um valor de 0 ou 1.
Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar
Se a expressão de inicialização ou a de incremento for omitida, será simplesmente desconsiderada. Se a condição de teste não estiver presente, serã considerada permanentemente verdadeira.
/* Codifica a entrada digitada */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> /* Para getch() */
int main()
{
unsigned char ch;
for(; (ch-getch()) != 'X';)
printf("%c", ch +1);
printf("\n");
system("PAUSE");
return 0;
}
Note que colocamos parênteses extras envolvendo a expressão de atribuição (ch = getch()). Esses parênteses são realmente necessários, pois a precedência de != é maior que a de =; isso significa que, na falta dos parênteses, o teste relaciona != será feito antes da atribuição e a expressão será equivalente a:
ch = (getch() != 'X')
e ch terá um valor de 0 ou 1.
Fonte: Treinamento em Linguagem C 2 Edição | Victorine Viviane Mizhar
Nenhum comentário:
Postar um comentário