- 編程與類型系統
- (美)弗拉德·里斯庫迪亞
- 440字
- 2021-01-29 11:51:22
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位整數)告訴編譯器和運行時,這個位序列表示-32768和32767之間的一個整數值,從而保證將其正確地解釋為-15709
在1.2節我們將看到,當為代碼添加屬性時,例如將一個值標記為const,或者將一個成員變量標記為private,系統將強制實施其他許多安全屬性。