Durante la fase di analisi semantica compare questo tipo di errore. Questi tipi di errori vengono rilevati in fase di compilazione.
La maggior parte degli errori in fase di compilazione sono errori di ambito e di dichiarazione. Per esempio: identificatori non dichiarati o dichiarati multipli. Il tipo non corrispondente è un altro errore in fase di compilazione.
L'errore semantico può verificarsi utilizzando la variabile sbagliata o l'operatore sbagliato o eseguendo l'operazione nell'ordine sbagliato.
Alcuni errori semantici possono essere:
- Tipi di operandi incompatibili
- Variabile non dichiarata
- Non corrispondenza dell'argomento effettivo con l'argomento formale
Esempio 1: Utilizzo di una variabile non inizializzata:
int i; void f (int m) { m=t; }
In questo codice t non è dichiarato ed è per questo che mostra l'errore semantico.
Esempio 2: Incompatibilità di tipo:
int a = 'hello'; // the types String and int are not compatible
Esempio 3: Errori nelle espressioni:
String s = '...'; int a = 5 - s; // the - operator does not support arguments of type String