代入演算子に関するバグとQWord型の表示に関するバグ

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 代入演算子に関するバグとQWord型の表示に関するバグ

by konisi » 2010年3月14日(日) 05:13

今AB4.24を落とし直してコンパイルしたところ、確かに6になってました。

直ったんですねぇ。

by ヒィー(((゚Д゚))) » 2010年3月10日(水) 16:09

AB4.24.00
OS:WinXPPro SP3 32bit
CPU:Core2Duo 3GHz
MEM:3.25GiB認識

バイナリとコードをアップ。
http://77c.org/d.php?f=nk13160.zip

by konisi » 2010年3月10日(水) 15:23

ヒィー(((゚Д゚))) さんが書きました:一つ目は6になりますが。
今手元のマシンにあるAB4.23で試したところやはり4になりました。
そちらの環境を教えてくださいな。

OS:WinXPPro SP3 32bit
CPU:Core2Duo 2GHz
MEM:1.72GiB認識

by イグトランス » 2010年3月07日(日) 00:06

QWordのほうですが、直接の原因はPrintの数値出力がDouble型しか受け付けないことにあります。
さらに、x86 FPUの命令にQWord→Doubleという変換が用意されておらず、ABコンパイラがQWord→Doubleの変換にInt64→Doubleの変換命令を用いていることで、あのような出力となってしまっています。

QWord→Doubleの変換の問題は解消されていなかったと思いますが、Printで期待通りの出力にならないという点は現時点のAB5でも解消済みだったはずです。いつ出せるか分からないという状況で申し訳ありません。

by ヒィー(((゚Д゚))) » 2010年3月06日(土) 20:32

コード: 全て選択

#console
Dim a As Long
a=2
a*=1+2
Print a'6と表示してほしいが、4と表示される

Dim b As QWord
b=12345678901234567890'<2^64=18446744073709551616
Print b'12345678901234567890と表示される筈だが、負の数が表示される

Sleep(-1)
一つ目は6になりますが。

代入演算子に関するバグとQWord型の表示に関するバグ

by MonkeyTake » 2010年3月06日(土) 07:17

最近AB4.24を使い始めておかしいな・・・とずっと悩んでいたら
代入演算子のバグですか・・・

AB4.24が出たのは2006/4/8ですが
こんな超基本的な事のバグがずっと放置されてるなんて・・・

Qword型

by 三毛CAT » 2008年7月11日(金) 08:02

自分もQword型に付いては気になったので試してみました。(この書き込みを見る前に)
他の符号なし整数型は普通に動くのですけどね...。

コード: 全て選択

#N88BASIC
Dim a As Qword
Dim b As Int64
Dim c As Char
Dim d As Byte
Dim e As Integer
Dim f As Word
Dim g As Long
Dim h As Dword
a=18446744073709550000
b=18446744073709550000
c=250
d=250
e=65500
f=65500
g=4294967000
h=4294967000
Print "↓Qword"
Print a
Print "↓Int64"
Print b
Print "↓Char"
Print c
Print "↓Byte"
Print d
Print "↓Integer"
Print e
Print "↓Word"
Print f
Print "↓Long"
Print g
Print "↓Dword"
Print h

代入演算子に関するバグとQWord型の表示に関するバグ

by konisi » 2008年6月27日(金) 18:08

ふと思いついて試してみたら見つかったものを報告します。
AB423とAB424で誤動作を確認しました。

コード: 全て選択

#console
Dim a As Long
a=2
a*=1+2
Print a'6と表示してほしいが、4と表示される

Dim b As QWord
b=12345678901234567890'<2^64=18446744073709551616
Print b'12345678901234567890と表示される筈だが、負の数が表示される

Sleep(-1)

ページトップ