Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在for语句中将变量作为计数器时会发生什么?_Vb.net_Variables_For Loop_Mono - Fatal编程技术网

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
,则可能是另一个故事