編譯原理(三)型別檢查

2021-08-14 21:51:32 字數 1163 閱讀 7475

型別系統、型別檢查、多態函式、過載

上面不能在不該出現continue的地方出現continue。

c語言:

問題:如果a是乙個陣列名,那麼表示式a和&a的值都是陣列a第乙個元素的位址,它們的使用是否有區別?

用四個c檔案的編譯報錯或執行結果來提示

上面報錯,返回的a不能作為二位陣列的指標

返回a的指標時,是正確的

二維陣列的第乙個元素,可以看作是乙個一維陣列,所以返回a時,表示二位陣列的第乙個元素,與b型別相同,沒有報錯

a+1加了80,因為a的第二元有20個int型別的陣列,&a+1加了800,因為a占用了800位元組記憶體。

執行錯誤和安全語言

1、程式執行時的執行錯誤分成兩類

例:非法指令錯誤、非法記憶體訪問、除數為0

引起計算立即停止

例如:跳到乙個錯誤的位址,該位址開始的記憶體正好代表乙個指令序列

錯誤可能會有一段時間未引起注意

安全語言

禁止錯誤

良行為程式和安全語言也可基於禁止錯誤來編譯

良型別的程式

型別可靠的語言

型別檢查:型別化語言

實際使用的一些語言並不安全

c語言

在現代語言設計上,安全性越來越重要

型別化語言的優點

從工程的觀點看,型別化語言有下面一些優點

Haskell 筆記 三 型別

haskell有強大的型別系統 每個表示式在編譯時都會明確型別,因此可以有更多的資訊來檢查錯誤。支援型別推導。prelude t true true bool prelude t a a char prelude t hi hi char prelude t true,a true,a bool,c...

PHP學習筆記(三) 型別 布林型

下面效果相同,說明true和false並不區分大小寫。再為大家介紹兩種方式,因為 很簡單,所以不做贅述了。vs 下面介紹一種應用 轉換為布林值 要明示地將乙個值轉換成 boolean,用 bool 或者 boolean 來強制轉換。但是很多情況下不需要用強制轉換,因為當運算子,函式或者流程控制需要乙...

Linux的Nginx三 型別 特點

提供http的訪問,例如nginx apache iis等,雖然tomcat也能夠實現,但這並不是他的主要功能,而且效能也遠不如專門的web伺服器 能夠用於應用程式的執行 伺服器通常是客戶端訪問的一種行為,在整個客戶端訪問伺服器的過程中有著重要的作用 我覺得叫做中間服務伺服器更合適 因為他連線後台伺...