0

我正在使用遗留代码,并且在查找 GW Basic 的教程和手册几天后遇到了一些我无法解释的问题:在第 530 行的比较中使用了一个变量 (P9%) (IF P9 % <> 0) 之前代码将在第 860 行达到其定义。这不是一段复杂的代码,总共只有约 1200 行,所以我相信我没有错过任何 goto 或 gosub 或任何会达到 860在这个比较之前。

我很好奇这在程序运行时是如何影响程序的。我的大部分经验是在 c++ 中这种东西无法编译,如果它编译了,一个未分配的变量可能包含任何适合的东西,但我不知道在 Basic 中为变量赋予了什么样的默认赋值。

4

1 回答 1

0

自从我在 gwbasic 中写了很多东西以来已经有很多年了!

如果我没记错的话,在这种情况下,变量被分配了一个零值。Gwbasic(我认为是 Qbasic)在第一次引用时为所有变量分配一个默认值,这通常是零或字符串变量的空字符串。

有趣的是,当使用 DIM 语句创建数组时,数组中的所有项也都以这种方式初始化。

即使使用这种机制,通常最好初始化一个变量,只是为了清楚发生了什么。

为 gwbasic 编写的那个时代的许多程序员尽可能多地省略,以尽量减少程序指令使用的内存量,以便他们有更多的东西用于其他东西。所以这可能就是它没有初始化的原因。

于 2013-07-11T05:43:01.757 回答