就我而言,这没有任何价值。我在研究问题时发现了这一点。
在VBA中:
鉴于以下内容:Dim a As Boolean, b As Boolean, c As Boolean
代码a = b = c = 1 = 1
将a指定为False。
但a = b = c = true
指定为真。
任何人都可以解释为什么会这样吗?显然1 = 1
评估为真。
作为旁注,a = 1 = 1
也会将a指定为true。此外,使用变体而不是布尔值的行为是相同的。
我再次知道这没有实际意义,我只是好奇是否有人可以解释这种行为。
答案 0 :(得分:6)
表达式从左到右计算,因为所有运算符具有相同的优先级。
a = b = c = 1 = 1
b = c返回True。
True = 1返回False,因为True在比较之前转换为-1。
False = 1返回False
a = b = c = true
b = c返回True
True = true返回True。
答案 1 :(得分:1)
我认为在这种情况下,它是从左到右进行比较,而不是像人们想象的那样进行分配。
如果你要将b和c初始化为真
b = True
c = True
并检查a的值
a = c = 1 = 1
你仍然会发现它是假的
所以考虑一下,似乎
a = b = c = 1 = 1
是有效的
a = (((b = c) = 1) = 1)
另外,即使您将括号更改为
a = (b = (c = (1 = 1)))
它仍然是假的。
鉴于b和c未初始化(False),唯一的方法是将a语句更改为
a = (b = c) = (1 = 1)