vb If And Then 的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/21 19:17:28
看以下代码:
Dim a, b, i As Integer
a = InputBox(a)
b = InputBox(b)
If a Then MsgBox a & ",a非0"
If b Then MsgBox b & ",b非0"
'以上非0则成立
For i = 1 To b
If a And i Then '这里是怎么算的?
'这里成立的原因是什么?
MsgBox a & "And" & i & vbNewLine & i Mod a
Else
'这里不成立的原因是什么?
MsgBox a & "Or" & i & vbNewLine & i Mod a
End If
Next
一、a和b全部非0 ,但仍有为真的情况,比如a=3,b=130,我们改成统计真假的代码:
Dim a, b, i As Integer
Dim TTrue, TFalse As Integer
a = InputBox(a)
b = InputBox(b)
For i = 1 To b
If a And i Then
TTrue = TTrue + 1
Else
TFalse = TFalse + 1
End If
Next
MsgBox "a = " & a & vbNewLine & "b = " & b & vbNewLine & "真为" & TTrue & "假为" & TFalse
'真假结果为98和32
'它到底怎么判断的
二、 eqnoah是说 以上If a And i The

For i = 1 To b
If a And i Then '这里是怎么算的?
'这里成立的原因是什么?
'当a and b是指a的二进制数和b的二进制数进行与运算
'如:a=3,二进制是:&11;b=130,二进制是:10000010
'&00000011
'&10000010
'所以当b的第0位和第1位都是0时,与的结果就是0,即逢4变为0一次.0\4\8..
'当b=1 to 130时,有130/4=32……2。因此有32次出现假。剩下的就不用说了。
MsgBox a & "And" & i & vbNewLine & i Mod a
Else
'这里不成立的原因是什么?
MsgBox a & "Or" & i & vbNewLine & i Mod a
End If
Next

IF语句中,如果是整形变量,那么变量值为0时为假,不是0则为真

那么If a And i Then
a=0 或 i=0 ,则为假
a不等于0 且 i不等于0 ,则为真

估计系统默认条件不等于零.
If a And i Then 应该等同于 If a<>0 And i<>0 Then

在vb里面数字不是零,写在if then 中间的话,那就是成立的。如果是零条件就不成立,其下的语句也就不会被执行。例如a=1 b=0 a and b得到的结果就是false。