何時も、お世話に成っています。
 命令語:For ~ Next で、counter(カウンタ変数)の型をDWordにし、終値(end)を0、加算値(step)を -1 にした場合、止まらない。
カウンタ変数の型を Long の場合や、終値を0以外の場合は、OKです。
宜しくお願いします。
			
			
									
						
										
						命令語:For ~ Next の不具合
Re: 命令語:For ~ Next の不具合
>  命令語: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 の不具合でないと思いますが?
			
			
													> カウンタ変数の型を 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 の補足説明
>Iが-1になってからFOR~NEXTを抜け出します。
そうですね、0(終値)までと勘違いしてました。
>IはLONG型に変数宣言すべきでしょう。
加算値が負の場合は、「符号付き」で宣言しましょう。
			
			
									
						
										
						そうですね、0(終値)までと勘違いしてました。
>IはLONG型に変数宣言すべきでしょう。
加算値が負の場合は、「符号付き」で宣言しましょう。