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 |