For 〜Next文で困ってます

解決


他人のふんどし  2009-11-12 11:42:00  No: 146508  IP: [192.*.*.*]

開発環境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 11:55:02  No: 146509  IP: [192.*.*.*]

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

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


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

編集 削除
間違いかもしれない  2009-11-12 14:03:48  No: 146510  IP: [192.*.*.*]

For文って、

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

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

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

編集 削除
うすらはげ  2009-11-12 18:13:52  No: 146511  IP: [192.*.*.*]

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

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

編集 削除
他人のふんどし  2009-11-12 18:36:22  No: 146512  IP: [192.*.*.*]

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

編集 削除