注册 登录
编程论坛 VB6论坛

关于一段简单代码的几个问题

Bunny008 发布于 2012-03-09 23:35, 463 次点击
For I% = 0 To 7
      If (DataValue% And (2 ^ I%)) Then
         lblBitVal(I%).Caption = Format$(One%, "0")
      Else
         lblBitVal(I%).Caption = Format$(Zero%, "0")
      End If
   Next I%

请教:
1.以上代码,I%的“%”是不是仅代表I是个Integer而已?
2.IF判断是不是说当“(DataValue% And (2 ^ I%))”的值为1的时候,执行下一句,为0的时候,执行Else的语句?
3.当I%=0,DataValue%=254的时候,lblBitVal(0).Caption=?
4.Format$(one%,"0")是什么意思?

谢谢!
4 回复
#2
Artless2012-03-10 00:24
“%”仅代表Integer
IF判断值为true的时候,执行下一句,为false的时候,执行Else的语句
当I%=0,DataValue%=254的时候,lblBitVal(0).Caption=Format$(Zero%, "0")
msdn Format$
#3
Bunny0082012-03-10 03:37
回复 2楼 Artless
T or F不是逻辑值,0 or 1不是布尔值吗?      '我错了,布尔值是True和False,当用于算术运算中,True当作-1,False当作0.但是什么时候True是1,False是0呢?

DataValue% 和2 ^ I% 都是Integer,那么(DataValue% And (2 ^ I%))的值不是0就是1,而执行的时候,0就认为是F,1就认为是T,这是为什么呢?

运行后,我已经有以下结果:
当I%=0,DataValue%=254的时候,执行lblBitVal(0).Caption=Format$(Zero%, "0")=0;
当I%=1,DataValue%=254的时候,执行lblBitVal(0).Caption=Format$(One%, "0")=1

查资料说Format$是强制转换格式。如果在这里Format$(Zero%,“0”)是把Zero强制返回为一个一位整数0的话,那么为什么不直接写成lblBitVal(0).Caption=0呢?

谢谢!




[ 本帖最后由 Bunny008 于 2012-3-10 03:53 编辑 ]
#4
wellhide2012-03-12 18:55
%代表的是一个整数序列,用for next语句执行操作,用if then语句执行真假变量,大体上就这么个意思
#5
Bunny0082012-03-14 00:44
谢谢wellhide。不过还是不明白为什么不直接赋值为0或1,而是要用format$函数。
1