【发布时间】:2020-06-10 12:59:41
【问题描述】:
Option explicit
Dim VarA
Dim VarB
VarA = 2560 and 3
VarB = 2560 and 4
wscript.echo "VarA is "&VarA
wscript.echo "VarB is "&VarB
显示
VarA is 0
VarB is 0
请有人解释一下VarA 和VarB 是如何产生0 的。
【问题讨论】:
标签: vbscript
Option explicit
Dim VarA
Dim VarB
VarA = 2560 and 3
VarB = 2560 and 4
wscript.echo "VarA is "&VarA
wscript.echo "VarB is "&VarB
显示
VarA is 0
VarB is 0
请有人解释一下VarA 和VarB 是如何产生0 的。
【问题讨论】:
标签: vbscript
它完全按照你的要求去做。
来自the documentation for the And Operator:
当且仅当两个表达式的计算结果都为 True,结果为 True。如果任一表达式的计算结果为 False,则结果为 False。逻辑运算没有短路。所有表达式都被计算。
在这种情况下,虽然@MCND mentioned in the comments 再次来自文档:
And运算符还对两个数值表达式中位置相同的位进行按位比较,并在 result 中设置相应的位。
因此0 结果而不是显式布尔值。
但是,如果您想将这些值相加,则需要使用 Addition + Operator。
将两个数字相加。
Option Explicit
Dim VarA
Dim VarB
VarA = 2560 + 3
VarB = 2560 + 4
WScript.Echo "VarA is " & VarA
WScript.Echo "VarB is " & VarB
输出:
VarA is 2563
VarB is 2564
【讨论】:
And 运算符还 “对两个数值表达式中相同位置的位进行按位比较”,因此 OP 在变量中获得了 0。