首页 > 解决方案 > Excel VBA 中的基本布尔问题:输出 -1

问题描述

真 * 真 * 真 = -1

当我乘以等于 true 的奇数个布尔变量时,结果为 -1。为什么是这样?

这不是:真*真*真

与此相同:

1 * 1 * 1?

为什么 vba 返回 -1,而 Excel 在评估时返回 1?

我一直在使用这样的编写代码

如果 Asb(TRUE * TRUE * TRUE) =1 那么...

或这个

如果 TRUE * TRUE * TRUE <> 0 则 ...

我想了解为什么代码会以这种方式运行。提前感谢您的解释。

标签: excelvbabooleanbasic

解决方案


你必须坚持 -1 和 0 来判断真假。要确认您的语言用于 true,只需将零分配给变量 (false),不必是布尔值,然后打印 not(variable) 以确定什么是 true。除非原始值为-1,否则这不起作用。按位非运算符反转所有位,-1 是一个两位数,其中所有位都被设置,零所有位都被清除。如果您为变量分配任何其他非零数字,则在转换为布尔值时,使用按位 not 仍将返回 true。

二进制中的一个是十五个零和一个一。翻转所有这些位,您会得到 15 个位,然后是一个零,这是一个负值,因为第一位表示负数,但它不会是负数。再次翻转所有位将其返回到其原始值 - 1。

如果不清楚,请告诉我。


推荐阅读