有人可以向我解释如何在这里使用两个数字和一个布尔值?为什么j=3
返回true但j=2
返回false?
dim jak as Boolean
dim i as Integer
dim j as Integer
i = 1
j = 3
jak = j And i
Console.WriteLine("Hello, world!" & jak)
答案 0 :(得分:3)
见。当操作数是数字而不是布尔值时,AND
执行按位AND
,而不是严格逻辑1 = 0 0 0 0 0 0 0 1
2 = 0 0 0 0 0 0 1 0
3 = 0 0 0 0 0 0 1 1
1 AND 2 = 0 0 0 0 0 0 0 0 = FALSE, when converted to boolean
1 AND 3 = 0 0 0 0 0 0 0 1 = TRUE, when converted to boolean
,就像操作数是布尔值时一样。
sc
答案 1 :(得分:2)
如果您有Option Strict On,则不会出现此问题。它会告诉你将整数转换为布尔值是一个问题。但是没有它,VB将所有内容转换为True,除了0,这是假的。
AND
3和1 = 1然后转换为True
答案 2 :(得分:0)
它正在做一个按位 - 和i和j然后转换为布尔值 - 非零是真的。
1和3 - > 01和11二进制 - > 01因此非零,
1和2 - > 01和10二进制 - > 00因此为零