首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这清楚的陈述是否有第一个参数?

这清楚的陈述是否有第一个参数?
EN

Stack Overflow用户
提问于 2018-12-08 06:48:41
回答 1查看 117关注 0票数 5

在QuickBASIC和QuickBASIC中,语句都是传递的参数,其中一些参数是可选的,可以根据语句省略:

代码语言:javascript
复制
REM Move the text cursor to the specified column and row.
LOCATE row%, column%

REM Move the text cursor to the specified column without changing the row.
LOCATE , column%

在GW-BASIC中,CLEAR语句非常不寻常,因为它的第一个“参数”总是被省略:

代码语言:javascript
复制
CLEAR , basicMem
CLEAR , basicMem, basicStack
CLEAR , , basicStack

在QuickBASIC中,由于解释器/运行时管理自己的内存,basicMem参数成为可选的:

代码语言:javascript
复制
CLEAR , , basicStack

我想知道的是,在GW-BASIC之前,第一个“论点”是否真的有用:

代码语言:javascript
复制
CLEAR missingArg, basicMem, basicStack
REM   ^^^^^^^^^^
REM      here

也就是说,在第一个逗号之前有一个有目的的非空论点吗?

如果有人知道的话,我很想知道!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-11 10:26:35

我想知道的是,在GW-BASIC之前,第一个“论点”是否真的有用: 清除missingArg,basicMem,basicStack REM ^ 也就是说,在第一个逗号之前有一个有目的的非空论点吗?

是的,有第一个论点,但从来没有真正利用它的3元形式。

微软(最初的微型软件)创建了牛市基础。它提供了一个CLEAR命令,没有参数可以将所有程序变量设置为零。4K版本没有字符串,因此不需要管理字符串空间。但是,8K、Extended版本有一个CLEAR命令,该命令还接受表单CLEAR x的一个参数。值x指定了以字节为单位的字符串空间的最大数量,在8K版本中,在加载时默认为50字节,在扩展和磁盘版本中为200字节,直到更改了[来源]。这就是丢失的第一个参数的来源,也是最初使用它的原因。然而,在当时,只有一个论点是有效的。

微软随后为多个系统开发了一个名为"BASIC-80“的衍生产品,特别是Intel的ISIS、CP/M和TEKDOS操作系统。一个“独立的磁盘基本”版本的BASIC-80也被创建,可以运行在“几乎任何8080或基于Z80的磁盘硬件没有操作系统”。没有BASIC-80的4K版本,所以可以合理地假设BASIC-80的所有版本都有字符串,就像8K版本的Altair一样。因此,需要管理字符串空间。然而,在BASIC-80中,增加了第二个论点。

代码语言:javascript
复制
CLEAR [expression![,address]]

expression!是一个表达式,它指定字符串空间的数量,如8K (Altair) BASIC中的字符串空间,而address是BASIC可用的最大地址,即BASIC可用的内存量,如GW中第一个逗号后面的参数。

最终,BASIC-80版本5.0发布到了世界上,它以奇怪的语法代替。

代码语言:javascript
复制
CLEAR [,[expression1][,expression2]]

expression1是BASIC可用的最大内存,而expression2是堆栈空间的数量。附录A: BASIC-80版本5.0中的新特性解释了为什么删除第一个参数:

  1. 动态分配字符串空间,将忽略双参数CLEAR语句中的第一个参数。

换句话说,CLEAR strSpace!,maxMem将忽略BASIC-80版本5.0中的strSpace!参数,因此语法变成了CLEAR [,[maxMem][,maxStack]]

QuickBASIC最终将语法进一步更改为CLEAR [,,stack]。令人困惑的是,QuickBASIC 4.5的在线帮助系统声明如下:

代码语言:javascript
复制
 Note: Two commas are used before stack to keep QuickBASIC compatible
       with BASICA. BASICA included an additional argument that set the
       size of the data segment. Because QuickBASIC automatically manages
       the data segment, the first parameter is no longer required.

提到的“第一个参数”是maxMem,因为BASICA (和releases )使用了BASIC-80版本5.0中可用的语法,而不是BASIC-80版本的预5.0版本所使用的同样缺失的strSpace!参数。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53680260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档