For 〜Next文で困ってます

解決


他人のふんどし  2009-11-12 20:42:00  No: 146508

開発環境VB2008
 Dim valeu As Integer
        If Integer.TryParse(TextBox1.Text, valeu) Then
            For i As Integer = 0 To valeu
                i += 1
                Label1.Text += i.ToString

            Next
        End If

valeu=5を代入すると、結果が1,2,3,4,5と予測してましたが
1,3,5と出力されます。
なぜ?


魔界の仮面弁士  2009-11-12 20:55:02  No: 146509

If の行で [F9] を押すと、そこにブレークポイントが設置され、
実行時に一時停止するようになります。

一時停止後、[F10](設定によっては[F8])を押すと、一行ずつ
ステップ実行する事ができますので、それぞれの変数の内容が
どのように変化するのかを見ていけば、理由が分かるかと思います。

# なお一般的には、For ループ中でループカウンタ変数の値を
# 直接編集するのは、あまり良い作法ではありません。


間違いかもしれない  2009-11-12 23:03:48  No: 146510

For文って、

1.初期化
2.条件判断し、真ならループ内を実行、偽なら終了
3.ループ内処理後の処理、ループ変数のインクリメント後、2を実行

ってなってた気がしますが・・・

他人のふんどしが書いたソースを実行すれば、そりゃぁ、1,3,5になるのは当たり前ですね。
だって、ループ内でインクリメント実施してそのうえ、For文内で1繰り返し処理ごとにインクリメントしてるんだもん。


うすらはげ  2009-11-13 03:13:52  No: 146511

間違いかもしれない くんへ

魔界の仮面弁士さんのようにきちんとした言葉使いでコメントするように
心がけてください。
相手を揶揄するようなコメントは貴方自身の品性が貧しいことを
全世界に証明していることになってしまいます。
お互いに気をつけようね
(^-^)


他人のふんどし  2009-11-13 03:36:22  No: 146512

私の勉強不足でした。有り難うございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加