sábado, 23 de junho de 2018

Omitindo expressões do laço for em C

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 

Nenhum comentário:

Postar um comentário