HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0704
はなげhgimg3をインクルードするとint関数の挙動が変わってしまう3解決


はなげ

リンク

2014/7/4(Fri) 15:34:48|NO.62744

hgimg3.asをインクルードすると、int関数の挙動が変わってしまうようです。


stings="2147483648" ;2147483647を超過 dialog str(int(stings)) ;-2147483648を返すはず・・・ end #include "hgimg3.as" ;この行の有無でintの挙動が変わる

2147483647より大きい整数文字列をintにかけた場合、
通常は-2147483648に戻ってから循環するはずですが、
hgimg3をインクルードした場合、2147483647への丸め込みが起こってしまいます。

hgimg3を使いつつもintの挙動を変えない方法を
ご存知の方は教えていただけると助かります。



この記事に返信する


Tetr@pod

リンク

2014/7/4(Fri) 20:32:15|NO.62748

力技。ソースコードの先頭に↓を追加。

#undef int #uselib "msvcrt.dll" #cfunc global int "atol" str



Tetr@pod

リンク

2014/7/4(Fri) 20:38:31|NO.62749

訂正。

#uselib "msvcrt.dll" #cfunc global _int "atol" str #define global ctype int@hsp(%1) _int(str(%1))



はなげ

リンク

2014/7/4(Fri) 21:39:48|NO.62750

Tetr@podさま
ありがとうございます。
なるほど、intを定義しなおしてやれば確かに戻りますね。



ONION software Copyright 1997-2021(c) All rights reserved.