На моем 32-разрядном компьютере под управлением Office 2003 Excel VBA следующий код
Debug.Print ""
Debug.Print Hex(&HFF00000 And &HF00000)
Debug.Print Hex(&HFF0000 And &HF0000)
Debug.Print Hex(&HFF000 And &HF000)
Debug.Print Hex(&HFF00 And &HF00)
Debug.Print Hex(&HFF0 And &HF0)
Debug.Print Hex(&HFF And &HF)
дает следующий вывод
F00000
F0000
FF000 '<- Here's the Anomaly
F00
F0
F
Кажется, это происходит только с шестнадцатеричным значением «F»; т.е. замените все "F" любой другой шестнадцатеричной цифрой, и вывод будет таким, как ожидалось.
Похоже на похмелье от 16-битной обработки
Мой мир был разрушен
Мне интересно, если;
1) это действительно Аномалия (или я схожу с ума?)
if it is;
2) это происходит с другими версиями Office
3) это происходит на 64-битных ПК
4) какой самый элегантный обходной путь
Любые подсказки будут оценены
Debug.Print &HF000, CLng(&HF000), CLng("&HF000")
дает-4096 -4096 61440
, поэтому кажется, что это связано с голой нотацией&h
... - person Tim Williams   schedule 18.01.2014&
(символ длинного типа), чтобы убедиться, что он правильно сохраняется как длинный. Например. попробуй этоDebug.Print &HF000, &HF000&
- person Tim Williams   schedule 18.01.2014&H
как знаковые, а значения ‹=&HFFFF
как 16-битное целое число со знаком, а значения в кавычках как беззнаковые, являются действительно интересными результатами. - person chris neilsen   schedule 18.01.2014