回 帖 发 新 帖 刷新版面

主题:boolean真和假的用法。。

在很多的情况下。。。if .. then b=1 else b=0 等等语句都可以简化

比较c是否为0
是b=1
否则
b=0

这个可以简化:
b=(c<>0)+1
如果C<>0的话,这个括号之后的值就是-1否则是0
那么(-1)+1就等于0,而(0)+1就等于1
所以C<>0的话B就是0否则是1

比较C是否大于0
是B=1
否则
B=0

B=(C>0)

比较C是否大于0
是B=B+1

b=B-(C>0)
因为C>0的话B=B-(-1)否则B=B-(0)
所以可以简化


比较C是否为1
是B=18
否则
B=17

b=18-((c=1)+1)
如果C=1的话B=18-((-1)+1)否则B=18-((0)+1)

比较C是否为1
是B=18
否则
B=16

b=16+(((c<>1)+1) * 2)
如果C=1的话B=16+(1*2)否则B=16+(0*2)

回复列表 (共2个回复)

沙发

我在使用"BOOLEAN真和假的用法"的时候也发现了一些简便方法。下面举几个例子。

例1:输出一个数除以2的商的四舍五入值(不许用CINT函数)。

一般方法:
s=n/2
IF s<>INT(s) THEN PRINT s+0.5 ELSE PRINT s
简便方法:
s=n/2
s=s+ABS(s<>INT(s))*0.5:PRINT s
例2:数组a共有10个元素,分别是a(1)到a(10),假设a(10)的后继元素是a(1),输入n(1<=n<=10),输出a(n)的后继元素是第几个元素。

一般方法:
INPUT n
s=n+1
IF s>10 THEN s=1
PRINT s
简便方法:
INPUT n
s=n+1+(n=10)*10                          '加上-10就等于减去10
PRINT s

例3:输出两个一位数m和n的和的个位。

一般解法:
INPUT m,n
s=m+n
PRINT s MOD 10
简便解法:
INPUT m,n
PRINT m+n+((m+n>10)*10)                             '同样,加上-10就等于减去10

板凳

你那些什么程序。。。。不给分。。
践踏PRG的BASIC。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册