回 帖 发 新 帖 刷新版面

主题:有几处不明白

X=100
 a=10:B=20
v1=-1:v2=0
if (a< B) THEN
  IF ( B<>15 ) THEN 
    IF NOT V1 THEN
     X=X-1
   ENDIF
      IF V2 THEN X=10
    ENDIF
  X=X-1
ENDIF
PRINT "X=";X
END
这个程序有两处不懂,1是IF NOT V1 THEN  是什么意思以什么作为条件? 2是 IF V2 THEN X=10是什么意思?
 

回复列表 (共5个回复)

沙发

not( )
对操作数(或者说是参数)的逻辑值取反判断。
字面上可以理解为 如果 不是 条件 那么就 让X的值变成10吧

没有not,就直接以条件V2来判断。

怎样判断?
以二进制为例:
全是0,假,条件不成立
其中有1,真,条件成立

以十进制举例:
0,假,条件不成立
非0,真,条件成立

not是怎样运算的?翻翻计算机基础教材,
对操作数全部取反。
除了 not(-1)=0 假
-1以外的数not后都是真。

板凳

谢谢.IF NOT V1 THEN
     X=X-1
   ENDIF
      IF V2 THEN X=10
    ENDIF
这两处还是有点不太明白,(a< B)成立   ( B<>15 成立,则 IF NOT V1 即V2=0,则X=X-1,是不是这样理解?

3 楼

我听不明白,而且你的 IF....endif 语句块并不配对。出错。

我尝试以两种方式向你解释:

if not V1 then     如果 V1<> -1 , 即 not V1 为真(0以外的值),那么
   X=X-1                          让X的值减1
elseif V2 then     否则 如果 V2 为真(非零值),那么让 X 为 10
   X=10
endif

V1,V2是条件,也可以是值.可以按照相同的概念来理解.

第二种实例:
if not (a < B) then X=X-1  如果a小于B[color=0000ff]不[/color]成立,那么让X少1
if B<>15 then X=10         如果B不等于15,那么让X的值是10
能不用IF块时,最好单行解决,解释速度不一样的.

其实在QB里的逻辑判断计算中,成立的值是-1,不成立的值是0
比如  a<B  如果a真的比B小,这个表达式的值(结果)就是-1,否则是0

4 楼


v1=-1,v2=0
if not v1(如果条件不是真的,即:如果条件为假)then(则执行)

if v2 (如果条件是假的)then(则执行)

5 楼

针对疑惑的两处,我的解答如下:
程序段中的第1处:   
IF NOT V1 THEN
     X=X-1
ENDIF

  它是个块IF语句,条件是NOT V1
  如果V1为0,则为假,条件NOT V1则为真,执行x=x-1
  如果V1为非0数,则为真,条件NOT V1则为假,不执行块IF语句.

至于程序段中的第2处:
IF V2 THEN X=10
    它为行IF语句,条件是V2
    如果V2是0,则为假,不执行THEN后语句
    如果V2是非0数,则为真,执行x=10

具体V1,V2的值是多少,由前面的语句决定.

我来回复

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