编程语言简介/基本类型
外观
< 编程语言简介
每种具有类型的编程语言都围绕着一组有限的基本类型构建这些类型。基本类型是原子的。换句话说,它们不能被分解成更简单的类型。例如,SML 编程语言有五种基本类型
- bool: 这些是真或假。
- int: 这些是整数,可以是正数或负数。
- real: 这些是实数。 SML 可能会用小数点后最多 12 位有效数字来表示它们,例如:2.7 / 3.33 = 0.810810810811.
- char: 这些是字符。与其他类型相比,它们的语法相当繁琐。例如#"a".
- string: 这些是字符链。但是,与大多数编程语言相反,SML 中的字符串不能像字符列表一样被分解。
不同的语言可能提供不同的基本类型。例如,Java 具有以下基本类型
- bool(1 位)
- byte(1 字节带符号)
- char(2 字节无符号)
- short(2 字节带符号)
- int(4 字节带符号)
- long(8 字节带符号)
- float(4 字节浮点数)
- double(8 字节浮点数)
有些作者会说字符串是 Java 中的基本类型。另一些人则会说字符串是复合类型:它们是字符链。然而,无论如何分类字符串,我们都同意字符串是内置类型。内置类型是用户未定义的数据类型。由于内置类型是核心语言的一部分,因此它的元素可以被编译器特殊处理。例如,Java 的字符串具有在引号之间的文字的特殊语法。此外,在 Java 中,字符串被实现为只读常量。如果我们尝试将一个字符插入到字符串的中间,那么我们可以做的是构建一个新的字符串,该字符串由原始值和我们想要插入的字符组成。
在一些语言中,基本类型是语言规范的一部分。因此,这些类型在支持该语言的任何系统中具有相同的语义。例如,Java 和 SML 中的基本类型就是这样。例如,在 Java 中,整数类型在任何运行 Java 虚拟机 的设置中都包含 232 个元素。然而,存在一些系统,其中基本类型的语义取决于编程语言的实现。 C 是一个典型的例子。这种编程语言中整数的大小可能在不同的架构之间有所不同。我们可以使用以下函数来找出 C 中的最大整数
#include<stdio.h>
int main(int argc, char** argv) {
unsigned int i = ~0U;
printf("%d\n", i);
i = i >> 1;
printf("%d\n", i);
}
这个函数在常数时间内执行,因为它是对位进行操作。在不支持此类操作的语言中,通常无法如此快速地找到最大整数。例如,在 SML 中,下面的函数在 时间内找到最大整数,其中 是整数类型中的位数
fun maxInt current inc = maxInt (current + inc) (inc * 2)
handle Overflow => if inc = 1 then current else maxInt current 1