Dim a As QWordがInt64になっているかもしれない。

ActiveBasicのバグと思われる不具合を発見された方は、こちらから知らせていただけると助かります。
返信する
メッセージ
作成者
YS

Dim a As QWordがInt64になっているかもしれない。

#1 投稿記事 by YS »

32bit*2の64bit計式で示されるファイル時間を強引に
32bitに圧縮しようとして気が付いたのですが、

#N88BASIC
Do
Qbit()
Dbit()
Sleep(INFINITE)
Loop


Sub Qbit()
Dim a As DWord
Dim b As DWord
Dim c As QWord
a=&HFFFFFFFF
b=&HFFFFFFFF
c=a
print a
print (c<<32 or b)
End Sub


Sub Dbit()
Dim a As Word
Dim b As Word
Dim c As DWord
a=&HFFFF
b=&HFFFF
c=a
print a
print (c<<16 or b)
End Sub


2つのDWordからQWordを作る関数がなかったので、
変な事をしてますが、このソースを実行すると、
Dbit()の表示は

65535
4294967295

で正常なのですが、Qbit()の表示が

4294967295
-1

となってしまいます。

また、QWord()のa=&HFFFFFFFFをa=&H7FFFFFFFにすると
表示は+ですが、a=&H8FFFFFFFにすると-になるので
どうやら先頭ビットが符号になっているみたいでした。
返信する