什么是静态类型检查?


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

c:=a + 3 * b;

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

如果语言中所有变量到类型的绑定都是静态的,那么类型检查实际上可以在编译时完成。这比在运行时发现错误更有优势,因为在编译时的更正通常成本更低。因此,静态类型检查涉及检查程序文本,通常在编译期间进行。

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

静态类型检查的优点

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

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

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

  • 运行时不需要在数据对象上附加类型标签。

  • 存储空间利用率得到提高。

  • 执行速度得到提高。

静态类型检查的缺点

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

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

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

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

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

  • 当语言允许内存单元在执行期间的不同时间存储多种类型的值时,静态类型检查会变得复杂。

更新于:2021年10月22日

5K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告