c++是一門靜態型別語言,在編譯時會作型別檢查。
在大多數語言中,物件的型別限制了物件可以執行的操作。如果某種型別不支援某種操作,那麼這種型別的物件也就不能執行該操作。
在c++中,操作是否合法是編譯時檢查的。當在編寫表示式時,編譯器檢查表示式中的物件是否按照該物件的型別定義的使用方式使用。如果不是的話,那麼編譯器提示錯誤,而不產生可執行檔案。
隨著程式和使用的型別變得越來越複雜,我們將看到靜態型別檢查能幫助我們更早的發現錯誤。靜態型別檢查使得編譯器必須能是被程式中的每個實體的型別。因此,程式中使用變數前必須先定義變數的型別。
強型別,弱型別,靜態型別,動態型別的區別
型別系統的一些概念,眾說紛紜,使用上也比較亂。有些東西,甚至不好嚴格定義。以下算學術界的一種相對 嚴格 的說法。首先了解一下基本概念 有了上面的概念,再討論強 弱型別,靜態 動態型別 偏向於不容忍隱式型別轉換,弱型別相對于強型別來說型別檢查更不嚴格,比如說允許變數型別的隱式轉換,允許強制型別轉換等等...
強型別與弱型別,靜態型別和動態型別
首先強弱是相對的。強型別 每個變數和物件都必須宣告型別,在編譯時確定好型別了,執行時不能更改。偏向於不容忍隱式型別轉換。譬如說haskell的int就不能變成double。弱型別 編譯時不確定型別,執行時根據語義確定是哪種型別。通俗地說,弱型別偏向於容忍隱式轉換,把不同型別的變數放在一起運算。靜態型...
弱型別 強型別 動態 靜態語言的區別
舉個例子 var a 5 var b 5 sumresult a b minresult a b 輸入sumresult的答案不是10,而是55,再次是將a的型別轉化為了字串,然後進行拼接。輸入minresult的答案是0,是將b的型別轉化為了數字,然後進行減法。強型別語言和弱型別語言區別 無論是強...