VB中Dim x%,y%,z% x=y=z=1 ✀ 语法没错,但结果都为 0 能讲讲原理吗

2025-02-24 15:58:37
推荐回答(5个)
回答1:

因为变量x,y,z被使用%后缀声明为整型,所以,它们的值一定是一个数值,并且初始值都是0
x=y=z=1
相当于
x=((y=z)=1)
而括号中的是一个逻辑表达式而非赋值语句,其执行顺序应为
x=((0=0)=1)
x=(True=1)
x=(-1=1) 'True对应的数值值为-1
x=False '由于x为整形变量,所以不能直接将False负值给x,会发生隐式类型转换
x=0 'False对应的数值值为0
变量y和变量z一直没有赋过值,所以保持初始值0
所以,语句执行后三个变量的值都是0,且不会发生语法错误.
如果还有问题欢迎追问,问题解决请及时选为满意回答,谢谢.

回答2:

看括号顺序:x = ( (y=z) =1 )
VB中变量未赋值的话,整型变量的缺省值是0
先运算 y=z ,结果是True,转换为整型,就是-1
再运算 -1 = 1,结果是False,转换为整型,就是0
所以,x = 0

回答3:

X=y=z=1,多个等号,应该只有最后一个=是赋值,其他的表示逻辑判断,就是真和假。

回答4:

x=y=z=1这个应该按逻辑比较进行运算, 而不是赋值运算, 所以都是0.

回答5:

x=y=z=1
的意思是 (x=y and x=z and x=1)
因为xyz都没有赋值,所以上式的结果为flase也就是0