数据类型 / 编程语言 · 2023年 10月 6日 0

基本数据类型

35 次浏览

大部分编程语言支持基本的数据类型,形如整形、浮点型和字符、字符串类型。

char/short/int/long (long)/float/(long) double/char * (string)/bool

不同编程语言类型差异

  • C90虽然引入了wchar_t, 似乎没特别的被使用。C99才引入布尔类型,这与它认为布尔是另外一种整数有关。
  • C++也有wchar_t,它是比较标准的宽字节,C++11引入了char16_t和char32_t, 支持Unicode更佳。C++17引入了byte类型,比已有的char类型更清楚表达字节。
  • Java用byte代表单字节,char是2字节Unicode,布尔类型是boolean.
  • Python并不凸显不同长度整形类型,统一用整数类型,将list/tuple/set/dict当做基本类型提高了开发效率。
  • JavaScript作为脚本语言,统一分为Number和String类型,因为更细节的整数类型似乎用途不大。
  • C#引入了Decimal, 更高精度小数点适合商务金融计算。
  • Fortran自然支持复数,对整形支持根据kind设定,可以是1/2/4/8字节。

signed or unsigned

  • C/C++标准未规定char类型是否是有符号,也可能是unsigned.
    • GCC编译参数-fsigned-char和-funsigned-char指定char符号。
  • Java/C# char类型均为Unicode字符,都是无符号类型。
  • C# byte和sbyte与C语言signed char和unsigned char对应。
  • wchar_t必然是无符号类型。
  • 整型一般都有无符号和有符号之分,注意一个特别之处C/C++格式串%o和%x仅仅代表无符号数。

位Bit

大部分计算机最小内存操作单元是字节,JESD DRAM标准DQ位宽也经常按8 bits为单位。英文字母ASCII码虽然可以优化为7位,但7不是一个计算机的好数字,按8位算是最优空间。当然,CPU也有提供位操作指令可以读取或者更新特定的比特。

标量和矢量

  • 标量是对基本数据类型的另外一种称呼。
  • 矢量是具有大小和方向的量,对应编程语言代表非基本类型,例如(多维)数组。

获取类型

  • C语言本身没有任何方式获取变量类型。
  • C++引入typeid获取变量或表达式类型。
  • Java/C#/Python有很方便的方式获取变量类型,反射机制让程序员可更深入控制类型内部。