Vb.net 在for语句中将变量作为计数器时会发生什么?
有人能说出每次迭代时计数器的值吗Vb.net 在for语句中将变量作为计数器时会发生什么?,vb.net,variables,for-loop,mono,Vb.net,Variables,For Loop,Mono,有人能说出每次迭代时计数器的值吗 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As Integer For x = 1 To 10 Step (x) x = x + 1 MsgBox(x)
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As Integer
For x = 1 To 10 Step (x)
x = x + 1
MsgBox(x)
Next
End Sub
End Class
2-11-第一次调用时对步骤(x)进行评估。(我是对的,是的-我有饼干吗?2-11-第一次调用步骤(x)时会进行评估。(我是对的,是的-我有饼干吗?迭代将是: x=2 x=4 x=6 x=8 x=10 但是怎么做呢? 第一次执行循环时,该值将为x=1 稍后在循环内部,x的值变成x=x+1,即x=2 现在,该值用作步长,因此代码采用大小为2的步长 在VB中,一旦计算出步长大小,就不会重新计算。例如,在第二次迭代中,该值变为x=4,但这并不意味着它现在需要4步。它将使用以前计算的值ie 2
迭代将是: x=2 x=4 x=6 x=8 x=10 但是怎么做呢? 第一次执行循环时,该值将为x=1 稍后在循环内部,x的值变成x=x+1,即x=2 现在,该值用作步长,因此代码采用大小为2的步长 在VB中,一旦计算出步长大小,就不会重新计算。例如,在第二次迭代中,该值变为x=4,但这并不意味着它现在需要4步。它将使用以前计算的值ie 2
我看不出该代码的用途。为什么您有一个
x
的步骤,为什么在循环完成时手动递增x
?步骤
和到
部分只计算一次,因此因为x
在循环之前为零(您从未初始化它,因此它得到默认值0),步骤
将始终为0。当前,对于x=2到11:MsgBox(x),您的代码等于:下一步
。我只想看看事情是如何运作的,这与代码的目的无关,而是与你的思维方式有关。然后从2-11开始,而不是像Arvind的回答那样从2-10开始。Mono编译器一定有个bug。你不能自己尝试一下,这样你就可以了解自己了。就像@VisualVincent评论的那样,我不明白为什么要编写这样的代码。这很奇怪。这不是拼图。se:)我不明白这段代码的目的。为什么您有一个x
的步骤,为什么在循环完成时手动递增x
?步骤
和到
部分只计算一次,因此因为x
在循环之前为零(您从未初始化它,因此它得到默认值0),步骤
将始终为0。当前,对于x=2到11:MsgBox(x),您的代码等于:下一步
。我只想看看事情是如何运作的,这与代码的目的无关,而是与你的思维方式有关。然后从2-11开始,而不是像Arvind的回答那样从2-10开始。Mono编译器一定有个bug。你不能自己尝试一下,这样你就可以了解自己了。就像@VisualVincent评论的那样,我不明白为什么要编写这样的代码。这很奇怪。这不是谜题。se:)我问的是一个回合计数器,不是我的意思是x之间()@MohammedKandeel:他的答案是2-11。关于步骤
他所说的只是它的工作原理。我问了一个关于计数器的问题,不是我指的是x之间()@MohammedKandeel:他的答案是2-11。他所说的Step
就是它的工作原理。那不可能是正确的<代码>步骤仅在第一次迭代之前进行评估。试试这个:@VisualIncent抱歉,但这是不可能的。在第一次迭代之前,告诉我如何计算步长。在第一次迭代之前,x的值是不确定的。您正在Mono中编译。您是否发现了与使用Microsoft.NET编译不同的行为?我认为Mono编译器有一个bug。Ideone给出了与您相同的结果:如果问题被标记为Mono
,则可能是另一个故事,不可能是正确的<代码>步骤仅在第一次迭代之前进行评估。试试这个:@VisualIncent抱歉,但这是不可能的。在第一次迭代之前,告诉我如何计算步长。在第一次迭代之前,x的值是不确定的。您正在Mono中编译。您是否发现了与使用Microsoft.NET编译不同的行为?我认为Mono编译器有一个bug。Ideone给出了与您相同的结果:如果问题标记为Mono
,则可能是另一个故事