1. 程式人生 > >強類型,弱類型,動態類型,靜態類型

強類型,弱類型,動態類型,靜態類型

隱式類型轉換 用戶 sting 靜態類 算術 tin and 數據 靜態類型

“C and C++ are considered weakly typed since, due to type-casting, one can interpret a field of a structure that was an integer as a pointer.”

我當前使用的開發語言為C/C++,為弱類型語言,主要因為:

1. 一些編程語言(例如C/C++)將指針暴露為數字值,並允許用戶對它們執行算術運算。這些語言有時被稱為“弱類型”,因為指針算法可用於繞過語言的類型系統

2. 偏向於容忍隱式類型轉換。譬如說C語言的int可以變成double,及bool可以隱式轉換為int

  技術分享圖片

              主流語言類型分類圖

  同時C/C++是靜態類型,當然有人會說,C++的多態,不是也有運行時類型判定的特性(RTTI)嗎,是的,C++有時候在運行的時候類型也是不知道的,會變化,需要臨時判定,

但是即使是要判定也是在你規定好的小範圍裏變動(父類和派生類),所以總的來說C/C++為靜態語言,編譯時進行類型確定,否則編譯器會報錯

靜態類型和動態類型解釋大概如下:

1.動態類型語言:在運行期進行類型檢查的語言,也就是在編寫代碼的時候可以不指定變量的數據類型,比如Python和Ruby

2.靜態類型語言:它的數據類型是在編譯期進行檢查的,也就是說變量在使用前要聲明變量的數據類型,這樣的好處是把類型檢查放在編譯期,提前檢查可能出現的類型錯誤,典型代表C/C++和Java


  綜上,大體可以將C/C++歸類為靜態類型,弱類型語言

強類型,弱類型,動態類型,靜態類型