什么是静态类型检查?

类型检查是提供运算符的操作数是兼容类型的活动。兼容类型是对运算符合法或在语言规则下允许由编译器生成的代码隐式修改为合法类型的类型。这种自动转换称为强制转换。类型错误是将运算符应用于不正确类型的操作数。它可以说明类型检查的概念考虑以下语句。

c:=a + 3 * b;

这里 b 应该是允许乘以整数的类型。类似地,可以评估加法和赋值的操作数。

如果变量与类型的所有绑定在语言中都是静态的,那么类型检查实际上可以在统计上连续完成。在编译时识别错误比在运行时更重要,因为先前的纠正通常成本较低。因此,静态类型检查涉及检查程序文本,通常是在翻译期间。

使用类型系统的规则,每次计算表达式 f (a) 时,编译器可以从源文本推断函数 f 将应用于正确类型的操作数 a。静态类型检查所需的数据通常部分由程序员支持的声明支持,部分由不同的语言结构支持。

静态类型检查的优势

静态类型检查有以下优点:

  • 在编译时及早发现错误。

  • 它用于检查所有执行路径。

  • 运行时对数据对象没有类型标签的要求。

  • 存储使用适应性的相应增益。

  • 执行率的相应提高。

静态类型检查的缺点

静态类型检查有以下缺点:

  • 它会降低程序员的灵活性。

  • 许多语言,如 APL 和 SNOBOL4,由于它们的动态类型绑定,只启用动态类型检查。

  • 在没有声明的语言中,不可能进行静态类型检查。

  • 静态类型检查可能会影响子程序独立编译的声明、数据控制结构和供应。

  • 当一种语言使内存单元能够在执行期间的不同时间保存多种类型的值时,静态类型检查是复杂的。