我正在调查 VBA 函数中的错误,并发现 (&HFFFF00 And &HFF00) = &HFFFF00
。
我期望得到不同的结果:(&HFFFF00 And &HFF00) = &HFF00
。
我错过了什么?
最佳答案
我明白了。
- 第一个值
&HFFFF00
太大,无法容纳 16 位,因此它自动为 Long - 第二个值
&HFF00
确实适合16位,因此它是一个Integer,即有符号整数
尝试Debug.Print &HFF00, &HFF00&
,您将看到-256 65280
。第一个值是有符号整数,第二个值通过 &
后缀强制为(有符号)long。
显然,VBA 在可能的情况下将值存储为 16 位,并在表达式求值期间转换为 32 位时将它们删除,从而造成了困惑。
为了使操作正常工作,您需要使用 &
后缀强制常量变长。
关于excel - 为什么(&HFFFF00 和 &HFF00)= &HFFFF00?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57718221/