作者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://webptt.com/cn.aspx?n=bbs/Programming/M.1484899664.A.8FC.html
1F:推 j18382: Nice,不过Javascript应该是属於弱型别喔( 114.47.60.57 02/19 08:27
2F:→ j18382: 经测试1+"2"可以成立)。记得Java再某些特 114.47.60.57 02/19 08:28
3F:→ j18382: 定情况也像C一样会自动转换 114.47.60.57 02/19 08:29
4F:→ j18382: (Java在维基同时标记为强行别和弱行别) 114.47.60.57 02/19 08:31
5F:→ littleshan: 强与弱并不是用是否自动转换来区分的 114.25.245.23 03/04 02:11
6F:→ littleshan: 而是「有没有做型别检查」 114.25.245.23 03/04 02:12
8F:推 j18382: 在推一次,我觉得以自动转换比较好辨别XD 36.226.104.153 03/31 18:39
9F:→ j18382: 案自己对编/直译器了解,不可能对资料型 36.226.104.153 03/31 18:39
10F:推 CoNsTaR: 如果是有规则的自动转换还是算强型别,如 180.204.65.245 04/02 13:16
11F:→ CoNsTaR: 果是没规定的随便转才算是弱型别 180.204.65.245 04/02 13:16