VB中,整形量连等一什么作用

来源:百度知道 编辑:UC知道 时间:2024/05/22 07:40:07
Option Explicit
Private Sub Form_click()
Dim a As Integer, b As Integer, c As Integer
b = 1: c = 1
a = b = c
Print a
End Sub

结果是-1 不明白啊 ~~~求救~

a=b=c在vb里面不是连等,两个等号是有不同含义的.
第一个等号是赋值号,就是把左边的值复制到右边的变量中去
第二个等号是判断数字是否相等,如果相等结果就是true,不相等结果就是false

在编译时,这个式子被转换成逆波兰式aab==,这样计算顺序就明显了
最后要说一点,为什么前面的美女专家VB妮可得出了式子的计算结果true,为什么print出来的结果是-1呢?这是VB中的自动类型转换的结果,因为a是整型变量,而结果却是boolean型,于是VB自动把结果true转化成了整型数-1。

在VB中变量类型自动转化有优先顺序,在同一个式子中有多个不同类型变量同时计算时,按照优先顺序从低到高转换,它们的顺序是这样的:
char<integer<long<single<double

你注意:变量加等号后面的文字一律是表达式
a=b=c
其实是 a=(b=c)
而 b=c 是个表达式,表达式有值,这个值是 True
为什么是 True 呢?
因为 b 就等于 c,所以是对的,所以 (b=c) 的值是 True
那么在 VB 里面 True = -1, False = 0
所以你会出现这种错误
应该写成
b=a
c=b

是这样的..
可以这样看:
a=(b=c)? 吗?
因为b和c都是1, 所以b=c的, 所以a的值就是true

在VB中true返回是-1 , flase返回0

楼上的说得太好了TT
我只好拿两分走人
.
..
...
....
拿你两分不好意思啊,还是给你补充一下,可能你也已经知道了:
vb中 true 在内存中是这个样子的:&hffff ;而对于有符号的整数integer,&hffff=-1

&hffff为什么等于-1呢?众所周知,&hffff是16进制的形式,换成2进制的话是这样:
11111111 111