乐趣区

关于编译原理:编译原理与设计-11-编程语言

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

  • 动态类型
    变量的类型必须先申明,即在创立的那一刻就曾经确定好变量的类型,而后的应用中,你只能将这一指定类型的数据赋值给变量。如果强行将其余不相干类型的数据赋值给它,就会引发谬误。

    在编译阶段实现数据类型的相容性查看

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

    在运行阶段实现数据类型的相容性查看

动静类型语言举例:

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