Apresentam-se de seguida algumas regras a seguir pelos alunos desta cadeira na escrita de programas C, e que devem ser seguidas em todos os trabalhos que apresentarem, de modo a garantir igual comportamento dos programas independentemente do compilador e/ou sistema operativo utilizado.
void mataLinha(void)
{
int c;
while((c = getchar()) != '\n' && c != EOF)
/* Nada. */;
}
int f(void) e nunca
/* ERRADO */ int f()
void f(/* parametros... */) e nunca
/* ERRADO */ f(/* parametros */) e muito menos
/* ERRADO */ f()
pois, se é verdade que em alguns casos tais práticas não trazem quaisquer problemas, muitas vezes o comportamento dos programas torna-se imprevisível. Por exemplo, por que é que
#include <stdio.h>
#include <stdlib.h>
double quadrado1(); /* INCORRECTO! */
double quadrado2(double); /* CORRECTO. */
int main(void) {
printf("teste1: 11*11 = %g?\n", quadrado1(11));
printf("teste2: 11*11 = %g?\n", quadrado1(11.0));
printf("teste3: 11*11 = %g?\n", quadrado2(11));
printf("teste4: 11*11 = %g?\n", quadrado2(11.0));
return EXIT_SUCCESS;
}
double quadrado1(double x) {
return x*x;
}
double quadrado2(double x) {
return x*x;
}
imprime
teste1: 11*11 = 3.98585? teste2: 11*11 = 121? teste3: 11*11 = 121? teste4: 11*11 = 121?
em que o primeiro valor pode variar consoante a máquina e o compilador utilizado?
| Página
concebida e mantida por Eng. Manuel Menezes de Sequeira (última actualização 2006/07/07) Copyright © 1996-2001 ISCTE |
||||