[编译原理与设计] 1-1 编程语言

1. 动态类型与静态类型
参考: https://zhuanlan.zhihu.com/p/...

  • 静态类型
    变量的类型必须先声明,即在创建的那一刻就已经确定好变量的类型,而后的使用中,你只能将这一指定类型的数据赋值给变量。如果强行将其他不相干类型的数据赋值给它,就会引发错误。
    在编译阶段完成数据类型的相容性检查
[编译原理与设计] 1-1 编程语言
文章图片

  • 【[编译原理与设计] 1-1 编程语言】动态类型
    将什么类型的数据赋值给变量,这个变量就是什么类型
    在运行阶段完成数据类型的相容性检查
[编译原理与设计] 1-1 编程语言
文章图片

动态类型语言举例:
  1. PHP
  2. Ruby
  3. Python
静态类型语言举例:
  1. C
  2. C++
  3. JAVA
  4. C#
2. 强类型与弱类型
参考:https://zhuanlan.zhihu.com/p/...
  • 强类型语言(类型不安全语言)
    强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。
  • 弱类型语言(类型安全语言)
    弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过现行强制转换。
强类型语言举例:
  1. Java
  2. C++
  3. Python
弱类型语言举例:
  1. VB
  2. PHP
  3. JavaScript
补充:隐式类型转换
两种形式的隐式类型转换:
  1. 相关类型之间隐式转换
    如:一个int类型的数据与一个float类型的数据相加
  2. 不相关类型之隐式间转换
    如:一个int类型数据与一个字符串类型数据相加

    推荐阅读