0
想读一些旧的BASIC代码做一个端口,碰到这个令人费解的概念来:在函数定义里分配给arg?
1150 DEF FNB(Q)=Q+8*((Q=9)-(Q=0))
什么?是怎么回事?你如何分配给这样的参数?为什么这不等于Q+8*(9-0)
?
我写了一个小的演示进行调查,但没有取得任何东西,我预计:
10 DEF FNB(Q)=Q+8*((Q=9)-(Q=0))
20 PRINT FNB(1)
30 PRINT FNB(2)
20 PRINT FNB(3)
30 PRINT FNB(10)
RUN
1
2
3
10
Ok
我必须做一些错误的,因为FNB
不能是一个身份的功能。
有人可以解释BASIC实际上在这个功能中做了什么?为什么我的演示没有帮助?
“-1 = NOT 0”(即按位“NOT”,例如“0b111 = NOT 0b000”)。至于为什么这样做,我不知道,除了一些古老的效率原因,现在已经失传了。我不确定Visual Basic(更新的.NET兼容版本)是否也使得比较结果等于0或-1。顺便说一句,用于赋值和相等性测试的'='字符是大多数BASIC方言的特征,我只能假设它仍然是。 –
啊,一个0的bitflip!这是有道理的,在老派的心态。 GW-BASIC是我所涉及的唯一一种方言,而不是因为我早在90年代就已经13岁了。我没有*学习*这个答案,而是突然想起它。 :) –
我很幸运,能够使用QBASIC作为我的第一个BASIC语言之一,这是GW-BASIC的一个显着改进,具有适当的子程序和函数àla Pascal(尽管'DEF FNxxx'和'GOSUB'/RETURN'仍然可用)。无论如何,我很高兴你记得现在很多人看起来很奇怪的语法。 :) –