在语义分析阶段, 将出现此类错误。这些类型的错误是在编译时检测到的。
大多数编译时错误是范围和声明错误。例如:未声明的标识符或多个声明的标识符。类型不匹配是另一个编译时错误。
使用错误的变量或使用错误的运算符或以错误的顺序执行操作可能会引起语义错误。
一些语义错误可能是
- 不兼容的操作数类型
- 未声明的变量
- 实际论证与形式论证不匹配
int i;
void f (int m) {m=t;
}
在此代码中, 未声明t, 这就是为什么它显示语义错误的原因。
示例2:类型不兼容:
int a = "hello";
// the types String and int are not compatible
示例3:表达式中的错误:
String s = "...";
int a = 5 - s;
// the - operator does not support arguments of type String