excel - 为什么 (&HFFFF00 和 &HFF00) = &HFFFF00?
问题描述
我正在调查 VBA 函数中的一个错误,我发现了(&HFFFF00 And &HFF00) = &HFFFF00
.
我希望得到不同的结果:(&HFFFF00 And &HFF00) = &HFF00
.
我错过了什么?
解决方案
我想到了。
- 第一个值
&HFFFF00
太大而无法放入 16 位,因此它自动为 Long - 第二个值
&HFF00
确实适合 16 位,所以它是一个整数,即有符号整数
试试看Debug.Print &HFF00, &HFF00&
,你会看到-256 65280
的。第一个值是有符号整数,第二个值被&
后缀强制为(有符号)长整数。
显然,VBA 在可能的情况下将值存储为 16 位,并在表达式评估期间转换为 32 位时将它们处理掉,从而造成了混乱。
为了使操作起作用,您需要使用&
后缀将常量强制为 long。
推荐阅读
- java - 来自 springboot 的视频流
- r - R:每次新序列开始时如何开始一个新的 sub_id
- angular - 单选按钮验证不适用于表单提交
- heroku - Heroku 从 git repo 中保存的轮子部署和安装
- qt - `QKeySequence::match()` 什么时候返回 `QKeySequence::PartialMatch`?
- python - 使用 smote 时出现此错误
- c# - 如何在 Angular 中记录 Http 通信错误
- javascript - JavaScript 将原始数组保留在递归函数中
- python - Python,Pandas 替换数据
- replace - 如何删除指定字符之前的一行中的所有字符