Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Versione definitiva
int i = 5;
char c = x;
i+= c;
System.out.println(i); // ERRORE (DI CALCOLO): i calcoli coinvolgono tipi
// inconsistenti. Stampa 125
System.out.println(1. + 1/4); // inconsistenza nei calcoli misti;
// calcolo che coinvolge tipi compatibili ma di precisione differente
// ERRORE (DI CALCOLO) se crediamo che stampi 1.25
int x = 2147483647, y = 2147483647;
System.out.println(x+y); // ERRORE (DI CALCOLO): condizione di overflow; stampa -2
int den = 0;
System.out.println(10/den); // ERRORE (DI CALCOLO): divisione per zero
double base = 4.0, altezza = 2.0;
System.out.println(1/2 * base * altezza); // ERRORE (DI CALCOLO) se crediamo
// che stampi larea del triangolo: le assunzioni sullordine di
// valutazione e di precedenza degli operatori aritmetici non sono corrette
double peso = 85.0;
peso -= 100; // ERRORE (DI CALCOLO):
// il valore esce dallintervallo ragionevole (> 0)
int I = 5;
}
public static void F(D d) {
// ERRORE (DI INTERFACCIA) se pensiamo che d sia un agomento di SOLO input,
// che non sar`
a cambiato
d.x_d = 10;
}
}
Errori tipici in C
// File Errori.c
// Scopo: illustrare alcuni errori di programmazione tipici
// Nota: non si tratta di errori sintattici, infatti questo file viene
//
compilato con successo dal compilatore gcc 3.3.3
#include <stdio.h>
void G(int x) { printf("%d ", x); }
main() {
int x;
float f = 3.14;
int* p;
printf("%d ", x);
*p = 10;
x = f;
if
//
//
//
//
x = 3;
if (5 < x < 10) printf("hello"); // stampa "hello": ERRORE (DI CONFRONTO) se
// crediamo che lespressione significhi (5 < x && x < 10)
G(9.2); // stampa 9: ERRORE (DI INTERFACCIA) se crediamo che stampi 9.2
// Errori.c:31: WARNING: double used for argument 1 of G(int)
// GENERATO DAL COMPILATORE C++ (g++), NON DAL COMPILATORE C (gcc)
x = 3;
if (x = 1) printf("bye"); // stampa "bye": ERRORE (DI BATTITURA) se crediamo di
// avere scritto "x == 1"
}