以下哪个陈述是错误的?
(A)在静态类型语言中,程序中的每个变量都有一个固定类型
(B)在无类型语言中,值没有任何类型
(C)在动态类型语言中,变量没有类型
(D)在所有静态类型语言中,程序中的每个变量在程序执行期间只与单一类型的值相关联答案: (C)
解释:
这是一个模棱两可的问题。 “无类型语言”没有标准的明确定义,因此回答这个问题会有点困难。
(A)静态类型语言有一种与变量相关联的类型,该类型在推导出后就固定了。但是,类型可以在编码器编辑代码时指定(例如 C、 Java),也可以在编译时推断(例如 C++11、Haskell)。因此,在编译期之后,每个变量都绑定到一个固定类型,使此语句 [TRUE]
(B)根据一种定义,非类型语言以位的形式存储值,因此变量和值都没有与之关联的任何类型。因此,此语句变为 [TRUE]
(C)动态类型语言推导出值的类型并将它们绑定到存储这些值的变量。因此,值肯定有固定类型,但变量没有绑定到它们的固定类型。虽然我们可以说根据值将类型绑定到变量使它们具有类型,但它们没有一种固定的类型。这个说法有些含糊。 [真假]
(D)与 (A )相同的原因 [TRUE]
因此,正确答案应该是(C)
此解决方案由Vineet Purswani 提供。
这个问题的测验