変数を使ったべき乗計算

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

変数を使ったべき乗計算

#1 投稿記事 by ar »

標記の件、ver.4.13.00および4.21.00で下記のようなプログラムを実行すると演算結果が0となります。

コード: 全て選択

#N88BASIC
Dim a As Integer, b As Integer
a = 2
b = 2
Print a^b
どうやらどちらかの変数の型が2byte以下のもの(Char型、Byte型、Integer型、Word型)である場合に起こるようで、組み合わせによって例外処理やらアクセス違反やらエラーは無いけど結果がおかしかったりします。
当然ながら、二つの変数をLong型、DWord型、QWord型で宣言したり、演算時に型キャストした場合には正常に動きました。
確認願います。

ついでながら、Sqr関数内の変数2が型宣言されていないので#strictを記述したときに警告が出ます。
実用上は問題ないですが、宣言したほうが良いのでは。
山本
Site Admin
記事: 535
登録日時: 2005年5月30日(月) 15:08
連絡する:

#2 投稿記事 by 山本 »

ar さんが書きました:標記の件、ver.4.13.00および4.21.00で下記のようなプログラムを実行すると演算結果が0となります。

コード: 全て選択

#N88BASIC
Dim a As Integer, b As Integer
a = 2
b = 2
Print a^b
どうやらどちらかの変数の型が2byte以下のもの(Char型、Byte型、Integer型、Word型)である場合に起こるようで、組み合わせによって例外処理やらアクセス違反やらエラーは無いけど結果がおかしかったりします。
当然ながら、二つの変数をLong型、DWord型、QWord型で宣言したり、演算時に型キャストした場合には正常に動きました。
確認願います。
ご報告ありがとうございます。次回のバージョンアップで修正しますので、今しばらくお待ちください。

ar さんが書きました:ついでながら、Sqr関数内の変数2が型宣言されていないので#strictを記述したときに警告が出ます。
実用上は問題ないですが、宣言したほうが良いのでは。
こちらのほうも、次回のバージョンアップで修正させていただきます。
返信する