编程与类型系统
上QQ阅读APP看书,第一时间看更新

1.1.1 0和1

除了区分代码和数据,我们还需要知道如何解释一条数据。16位序列1100001010100011可以表示无符号16位整数49827,带符号整数-15709,UTF-8编码的字符'£',等等,如图1.1所示。运行程序的硬件将所有数据均存储为位序列,因此我们需要有另外一个层来为这些数据赋予意义。

图1.1 可用不同的方式来解释一个位序列

类型为数据赋予了意义,告诉软件在给定上下文中如何解释给定位序列,使其保留期望的意义。

类型还限制了一个变量可以接受的有效值的集合。一个带符号的16位整数可以表示-32768~32767的任意整数,但不能表示其他数字。能够限制允许值的范围,就不允许在运行时出现无效值,从而避免出现各种错误,如图1.2所示。将类型视为可取的值的集合,对于理解本书中讨论的许多概念很重要。

图1.2 这个位序列的类型是带符号的16位整数。类型信息(带符号的16位整数)告诉编译器和运行时,这个位序列表示-3276832767之间的一个整数值,从而保证将其正确地解释为-15709

在1.2节我们将看到,当为代码添加属性时,例如将一个值标记为const,或者将一个成员变量标记为private,系统将强制实施其他许多安全属性。