BASIC使用哪种打字系统?

10

我注意到没有地方能够给出上述问题的明确答案。当我注意到在QBasic中声明变量时,您从不必须说明变量的类型时,我首先想到了这个问题,尽管您可以添加后缀到变量名称以确保它属于特定类型。

此外,由于一些BASIC方言是解释性的,而其他方言是编译性的,那么这是否会影响类型系统?

3个回答

7
有许多种BASIC语言,有些已经历史悠久,有些仍在使用,因此无法给出一个真正的答案。
一些旧版的BASIC(带行号的BASIC)只有两种数据类型:字符串或整数。最初随Apple-II电脑一起发货的BASIC是“整数BASIC”。后来的BASIC引入了浮点数,通常是单精度浮点数。TI-99/4a随附的BASIC就是80年代早期浮点BASIC的一个例子。很久以前,您可以用引号制作一个字符串文字,用标识符名称后面的$符号制作一个字符串变量。没有$符号的变量通常会默认为给定basic类型支持的数字变量类型(整数或浮点数)。例如,GWBasic默认为浮点数,除非您指定了%符号,这意味着“整数”。TI扩展基本不具有整数类型,但是浮点数数字类型具有大约15个有效数字,如果我回忆得正确的话(浮点数数学错误除外)。
这些早期的BASIC基本上是静态类型的,尽管与更强大的语言相比,区别远不如现在。数据类型的选择很少:字符串、数字(有时是Int,有时是FP),有时可以指定数字为Int或FP。在幕后,一些甚至自由地在整数和浮点数之间进行转换。通常这种幕后转换没有得到很好的记录。
但是这就是80年代的情况,当时拥有家用电脑的人都是爱好者,标准很松散。每个硬件制造商似乎都有自己对BASIC应该如何工作的看法。
更现代的BASIC更加强大,允许更严格地控制变量类型(在需要时)。

3

早期的BASIC方言总是静态类型。数字变量、字符串变量和数组分别需要不同的语法。此外,名称长度通常仅限于一个符号。最常用的语法只是用 V 表示数字,V$ 表示字符串,而数组则需要用 DIM 单独声明。

由于我已经有15年没有使用过BASIC编程语言了,所以我不能确定现代方言中发生了什么。


1

在MultiValue数据库系统中使用的BASIC增强版采用动态类型。这意味着编译器根据语句的逻辑和上下文来决定如何处理变量。

双引号中的任何内容都是字符串,而不在双引号中的任何数字值都是数字。为了以double或float的形式写入数字数据,您可以使用各种格式表达式来实现,然后将其应用于您的变量。

最终,所有内容都保存在数据库级别的ASCII字符串中。因此,开发人员在业务逻辑级别强制执行类型,而不是由数据库强制执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接