类型检查是什么?对编译有什么作用?

关注者
14
被浏览
11,687

5 个回答

泻药。

类型检查主要是为了判断变量或者参数的实际类型和声明的类型是否匹配的问题。通常我们遇到这个问题的时候,是语义分析阶段的静态类型检查。这个类型检查可以让我们及早的发现类型不匹配的问题,不用等到执行的时候才发现这个问题。提前发现问题,降低问题成本。

在硬件看来,一切皆数据,连代码也可以是数据,只有大小/粒度之分。

但显然大家实际编程时,数据和数据之间是有区别的。

数据的组合、排布、约束属性等,共同构成了数据的“类型”。


所以我不太明白类型检查和“编译”存在什么关系,毕竟哪怕编译时不做类型检查,运行时也是要做的,就算你是JS也要做。


如果你是说你标题里C语言的话,最主要的作用就是约束对数据的操作。比如你不能修改const,或者不能操作这个struct里没有的东西。

而其他支持重载的语言还会考虑到函数决议。