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

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

  • 静态类型
    变量的类型必须先声明,即在创建的那一刻就已经确定好变量的类型,而后的使用中,你只能将这一指定类型的数据赋值给变量。如果强行将其他不相干类型的数据赋值给它,就会引发错误。

    在编译阶段完成数据类型的相容性检查

[编译原理与设计] 1-1 编程语言_第1张图片

  • 动态类型
    将什么类型的数据赋值给变量,这个变量就是什么类型

    在运行阶段完成数据类型的相容性检查

[编译原理与设计] 1-1 编程语言_第2张图片

动态类型语言举例:

  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类型数据与一个字符串类型数据相加

你可能感兴趣的:(编译原理计算机科学)