На моя 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