作者littleshan (我正在想要換什麼)
看板Programming
標題Re: [問題] 請問關於強型態的定義的問題
時間Fri Jan 20 16:06:36 2017
不是很確定你看的是哪一本書
不過在 Programming language 的定義上是這樣:
型別檢查 (type checking):
檢查變數的型別,避免對變數做出不符合其型別的操作 (ex 使用不合法的運算或取用不存在的物件成員)
強型別 (strong type-checking):
compiler / interpreter 永遠會進行型別檢查,目前大部分主流程式語言都屬於強型別,包括 Java、C#、Python、JavaScript
弱型別 (weak type-checking):
compiler / interpreter 允許在某些情況下略過型別檢查,可能會造成未定義行為 (undefined behavior),如 assembly、C/C++
靜態型別 (static type-checking):
在 compile-time 進行型別檢查,如 Java、C#
動態型別 (dynamic type-checking):
在 runtime 進行型別檢查,如 Python、JavaScript
許多靜態型別語言仍然會保留部分動態型別的特性,比如說 RTTI 或是 reflection 都算是動態型別檢查的應用。
-----
Sent from JPTT on my Sony F8332.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.32.97
※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1484899664.A.8FC.html
推 j18382: Nice,不過Javascript應該是屬於弱型別喔( 114.47.60.57 02/19 08:27
→ j18382: 經測試1+"2"可以成立)。記得Java再某些特 114.47.60.57 02/19 08:28
→ j18382: 定情況也像C一樣會自動轉換 114.47.60.57 02/19 08:29
→ j18382: (Java在維基同時標記為強行別和弱行別) 114.47.60.57 02/19 08:31
→ littleshan: 強與弱並不是用是否自動轉換來區分的 114.25.245.23 03/04 02:11
→ littleshan: 而是「有沒有做型別檢查」 114.25.245.23 03/04 02:12
推 j18382: 在推一次,我覺得以自動轉換比較好辨別XD 36.226.104.153 03/31 18:39
→ j18382: 案自己對編/直譯器了解,不可能對資料型 36.226.104.153 03/31 18:39
推 CoNsTaR: 如果是有規則的自動轉換還是算強型別,如 180.204.65.245 04/02 13:16
→ CoNsTaR: 果是沒規定的隨便轉才算是弱型別 180.204.65.245 04/02 13:16