コード: 全て選択
Dim a As Byte,b As DWord
a=&H10
b=a<<8
なぜかbの値が「0」となってしまいます。演算結果もByte型として認識されているのでしょうか?
コード: 全て選択
Dim a As Word,b As DWord,c As DWord
a=&H1000
b=&H1111
c=a*b
このコードでもcは「&H1000」で、期待している「&H1111000」とは異なります。
ちなみに c=b*a とすると正しい結果になります。
また、ByteやWordなど、小さいデータ型を大きいデータ型にキャストして演算に使っても正しい結果が得られます。
(上の例では b=a As DWord<<8 や c=a As DWord*b)
Ver 4.13.00ぐらいまでは正常に動作していたんですが、仕様が変更になったのでしょうか…?
以上 Ver 4.21.00 Ver 4.22.00 で確認(Windows XP Home SP2)。