大部分编程语言支持基本的数据类型,形如整形、浮点型和字符、字符串类型。
char/short/int/long (long)/float/(long) double/char * (string)/bool
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有很方便的方式获取变量类型,反射机制让程序员可更深入控制类型内部。