我正在研究VBA函数中的错误,然后发现了(&HFFFF00 And &HFF00) = &HFFFF00
。
我期望得到不同的结果:(&HFFFF00 And &HFF00) = &HFF00
。
我想念什么?
最佳答案
我想到了。
第一个值&HFFFF00
太大,无法容纳16位,因此自动为Long
第二个值&HFF00
确实适合16位,因此它是一个整数,它是一个有符号整数
尝试Debug.Print &HFF00, &HFF00&
,您将看到-256 65280
。第一个值是带符号的整数,第二个值由&
后缀强制为长(带符号)。
显然,VBA通过将值尽可能存储为16位,并在表达式求值过程中将其转换为32位时保留它们来使情况混乱。
为了使操作正常进行,您需要使用&
后缀强制常数变长。
关于excel - 为什么(&HFFFF00和&HFF00)=&HFFFF00?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57718221/