高手进!VB问题
Dima,bAsLonga=0b=a-(a=0)MsgBox(b)b=a-(a=0)‘这个算成立吗?b=a+(a=0)以上两个式子为什么成立,为什么?b=a+(a=0)当...
Dim a, b As Long
a = 0
b = a - (a = 0)
MsgBox(b)
b = a - (a = 0) ‘这个算成立吗?
b = a + (a = 0)
以上两个式子为什么成立,为什么?
b = a + (a = 0)
当A=0时 B=-1 '这-1是什么得来的?
当A<>0时 B=A '这又是怎么得来的?
请问一下这原理是什么?
b=a+(a=0)
()里面的A=0为什么是当作逻辑运算?
那 b=a+a=0 这又怎么算? 展开
a = 0
b = a - (a = 0)
MsgBox(b)
b = a - (a = 0) ‘这个算成立吗?
b = a + (a = 0)
以上两个式子为什么成立,为什么?
b = a + (a = 0)
当A=0时 B=-1 '这-1是什么得来的?
当A<>0时 B=A '这又是怎么得来的?
请问一下这原理是什么?
b=a+(a=0)
()里面的A=0为什么是当作逻辑运算?
那 b=a+a=0 这又怎么算? 展开
3个回答
展开全部
首先,VB里的true默认的值为-1,false的值默认为0
VB会把a=0当作逻辑运算,而不是赋值运算(其他语言一般把==作为逻辑运算,=作为赋值)
弄清楚这一点之后,这些代码就好理解了:
当a=0时
b = a + (a = 0)这条表达式的实际意义是b = a + true
之前提到true的值默认为+1,所以b = 0-1=-1
返回的就是-1了
当a=1时
b = a + (a = 0)这条表达式的实际意义是b = a + false
之前提到false的值默认为0,所以b = 1 + 0 =1
返回的就是A的值了
==========================================================
有什么不懂的请补充
===================
补充:
为什么当作逻辑运算?因为VB不允许在表达式中赋值,所以当作逻辑运算
b=a+a=0
当a=0时
实际为b=(0+0=0)
由于赋值的优先级最高所以b=不在运算范围,0+0作为数学运算,优先级比逻辑运算=0高
所以运算过程为0+0,判断=0,赋值给b
即b=(false+false)=false(返回true)
当a=1时
实际为b=(1+1=0)
理由同上
即b=(true+true)=false(返回false)
================================================
有问题继续补充
================================================
补充:
逻辑运算你应该会吧。。
不会的话可以看下面部分:
补充1的结构解释
false+false,两个都是假,自然返回假,然后false=false,一样,所以返回真
true+true,两个都是真,返回真
然后true=false,这当然不成立,返回假
VB会把a=0当作逻辑运算,而不是赋值运算(其他语言一般把==作为逻辑运算,=作为赋值)
弄清楚这一点之后,这些代码就好理解了:
当a=0时
b = a + (a = 0)这条表达式的实际意义是b = a + true
之前提到true的值默认为+1,所以b = 0-1=-1
返回的就是-1了
当a=1时
b = a + (a = 0)这条表达式的实际意义是b = a + false
之前提到false的值默认为0,所以b = 1 + 0 =1
返回的就是A的值了
==========================================================
有什么不懂的请补充
===================
补充:
为什么当作逻辑运算?因为VB不允许在表达式中赋值,所以当作逻辑运算
b=a+a=0
当a=0时
实际为b=(0+0=0)
由于赋值的优先级最高所以b=不在运算范围,0+0作为数学运算,优先级比逻辑运算=0高
所以运算过程为0+0,判断=0,赋值给b
即b=(false+false)=false(返回true)
当a=1时
实际为b=(1+1=0)
理由同上
即b=(true+true)=false(返回false)
================================================
有问题继续补充
================================================
补充:
逻辑运算你应该会吧。。
不会的话可以看下面部分:
补充1的结构解释
false+false,两个都是假,自然返回假,然后false=false,一样,所以返回真
true+true,两个都是真,返回真
然后true=false,这当然不成立,返回假
展开全部
你直接放程序里运行下不就知道了。这样是成立的啊。b = a - (a = 0) 这个的结果是b=1为什么呢,因为b=0-(0=0)这里0=0是true转换过来就是-1所以呢b=0--1就等于1了。
剩下的一个应该不用我解释为什么了吧
剩下的一个应该不用我解释为什么了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然成立,为什么不成立?
接照数学运算逻辑顺序,等号优先级低于+ - * / 所以用小括号括起来。
接照数学运算逻辑顺序,等号优先级低于+ - * / 所以用小括号括起来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询