ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月28日(木) 22:22

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2011年6月19日(日) 18:20 
何時も、お世話に成っています。

 命令語:For ~ Next で、counter(カウンタ変数)の型をDWordにし、終値(end)を0、加算値(step)を -1 にした場合、止まらない。
カウンタ変数の型を Long の場合や、終値を0以外の場合は、OKです。

宜しくお願いします。


通報する
ページトップ
   
投稿記事Posted: 2011年6月19日(日) 20:36 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 215
お住まい: 東京都
>  命令語:For ~ Next で、counter(カウンタ変数)の型をDWordにし、終値(end)を0、加算値(step)を -1 にした場合、止まらない。
> カウンタ変数の型を Long の場合や、終値を0以外の場合は、OKです。

上記からして下記の様なソースコードになります
DIM I AS DWord
FOR I = 100 TO 0 STEP -1

NEXT
MessageBox(NULL,"TEST","TEST",MB_OK)
END

上記の場合Iが-1になってからFOR~NEXTを抜け出します。
ところがDWordは符号なしデータなので-1は-1ではなく2^32-1(4294967295)となるため、FOR~NEXTを抜け出す条件が永遠に成立しないので無限ループになってしまいます。

IはLONG型に変数宣言すべきでしょう。
というか符号付きデータですね。
だから命令語:For ~ Next の不具合でないと思いますが?


最後に編集したユーザー たかせ [ 2014年10月25日(土) 21:24 ], 累計 2 回

通報する
ページトップ
 記事の件名: For ~ Next の補足説明
投稿記事Posted: 2011年6月20日(月) 00:28 
>Iが-1になってからFOR~NEXTを抜け出します。
 そうですね、0(終値)までと勘違いしてました。

>IはLONG型に変数宣言すべきでしょう。
 加算値が負の場合は、「符号付き」で宣言しましょう。


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Google [Bot] & ゲスト[9人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean