Sobre a programação, especialmente em linguagem CErros frequentes em C

Erros frequentes em C

As contribuições dos alunos para esta secção - "Erros frequentes e boas práticas" - são benvindas. Envie um "email" para acm@ncc.up.pt com Subject = P.I..

Erros frequentes Listamos de forma sumária alguns erros que se cometem frequentemente ao programar em C. São por vezes difíceis de detectar e de resultados surpreendentes e desastrosos...O leitor deve em cada caso pensar um pouco no que o computador fará. Os erros sintácticos estão marcados com "%".

  1. Comparar duas expressões com = em vez de ==, exemplo:
    if(i=1) printf("Erro!\n");
  2. Colocar ";" depois da condição de um if ou for; Por exemplo, qual é o efeito das seguintes partes de programa?
    if(i>=1); i=0;
    while(k>0);{k--; printf("*");
  3. % Colocar "," em vez de ";" como separador das expressões do for. Por exemplo
    for(i=0,i<n,i+)...;+
    while(k>0);{k--; printf("*");
  4. Quando um programa termina anormalmente, digamos no ponto *, podem não chegar a serem escritos os textos correspondentes a um ou mais "printf's" anteriores a esse ponto! Exemplo (pára em *, não é impresso Aqui):
    ...printf("Aqui");...*...

    Solução: usar "fflush(stdout)" a seguir a cada "printf":
    ...printf("Aqui");fflush(stdout);...*...

  5. Quando um programa utiliza funções de uma biblioteca, deve ser compilado de forma apropriada (ver o man do gcc). Por exemplo, se usa a função sin(), deve incluir a linha #include <math.h> e ser compilado da seguinte forma:
    gcc -lm prog.c
  6. No printf o número de "especificações de formato" (...%...) deve ser exactamente igual ao número de expressões a imprimir e a cada expressão deve corresponder um formato compatível. A seguinte instrução tem 2 erros (supondo que i é int):
    printf("a=%d b=%c\n",i,i+2,i+3);
  7. As expressões nos lados direiros dos define devem ser colocadas entre parêntesis
    #define LMAX (XMEDIO+2)
  8. Cuidado com os define; por exemplo #define LMAX (XMEDIO+2); está (provavelmente!) errado.

PC/PI - página reservada - versão 2005.02.08

Sobre a programação, especialmente em linguagem CErros frequentes em C