我注意到,我找不到任何地方可以给我上述问题的明确答案。当我注意到在声明变量时不必在 QBasic 中声明变量的类型时,我首先想知道这一点,尽管您可以在变量的名称中添加后缀以确保它是特定类型的。
此外,由于 BASIC 的某些方言被解释而其他方言被编译,这会影响打字系统吗?
BASIC 的风格有很多,有些只是历史性的,有些仍在使用中,不可能给出一个真正的答案。
一些旧的 BASIC(行号 BASIC)有两种数据类型:字符串或整数。Apple-II 计算机附带的原始 BASIC 是“整数 BASIC”。后来的 BASIC 引入了浮点数,通常是单精度浮点数。TI-99/4a 附带的 BASIC 是 80 年代早期浮点 BASIC 的一个例子。$
“Way back when”,您将创建一个带引号的字符串文字,以及一个在标识符名称后面带有印记的字符串变量。没有$
符号的变量通常默认为给定基本类型支持的数字变量类型(整数或浮点数)。例如,GWBasic 将默认为浮点,除非您指定%
sigil,意思是“整数”。TI Extended Basic 没有整数类型,但浮点数字类型有 15 个有效数字,如果我记得的话(无法承受浮点数学错误)。
这些早期的基础基本上是静态类型的,尽管这种区别远不如在更强大的语言中有用。数据类型的选择很少:字符串、数字(有时是 Int,有时是 FP),有时还可以指定数字是 Int 还是 FP。在幕后,一些甚至根据需要在整数和浮点之间自由转换。通常这种幕后转换没有得到很好的记录。
但那是 80 年代的情况,当时每个人都拥有一台家用电脑,而且标准很宽松。每个硬件制造商似乎都对 BASIC 的工作方式有自己的看法。
更现代的 BASIC 更强大,并且允许对变量类型进行更严格的控制(在需要时)。
BASIC 的早期方言始终是静态类型的。数值变量、字符串变量和数组都需要不同的语法。此外,名称的长度通常仅限于一个符号。最常用的语法仅V
用于数字,V$
因为字符串和数组分别用DIM
.
由于我已经有 15 年没有使用 BASIC 编程了,所以我无法确定现代方言中发生了什么。
多值数据库系统中使用的增强版 BASIC 使用动态类型。这意味着编译器会根据语句的逻辑和上下文来决定如何处理您的变量。
双引号中的任何内容都是字符串,而不是双引号中的任何数值都是数字。为了以双精度或浮点数的形式写入数字数据,您可以使用各种格式表达式来实现这一点,并将其应用于变量。
最终,所有内容都在数据库级别保存为 ASCII 字符串。因此,开发人员在业务逻辑级别强制执行类型,而不是在数据库强制执行它。