计次循环不能改变索引值

+86 199******65 10月前 329

每次循环我都让i减一,为什么索引还是累加呢


_计次循环不能改变索引值

最新回复 (8)
  • Song. 10月前
    2
    你发现了盲点
  • 清风依旧 10月前
    3
    这个问题有意思,感觉有问题,但又不知道问题在哪。
  • 诺亚方舟 10月前
    4
    For i  = 0 To 10
    看你如何理解这条命令,一般认为变量 i 会在每次循环自动加1,循环体运行次数由 i 掌控。
    其实不然,这条命令的循环次数由 0 To 10 掌控,虽然表面上看不到变量名,但你可以把它看做一个隐含变量,每次循环到这里,隐含变量自动按step步长值+1,隐含变量就把+1后的新值赋值给变量 i ,即然是赋值,那么不管 i 当前值是多少,都会被替换为新值。
    那难道说题主图中的 i = i -1 就不起作用了吗,其实也起作用,如果在循环体内改变 i 值,依然是有效的:
    for i = 1 to 10
        TracePrint(i)
        i = i - 1
        TracePrint(i)
    next
    只要分两次输出,就可以看到变量 i 在循环体内部是正常运算的,只是本次循环完毕会被隐藏变量重新赋值。
  • 谢老师 10月前
    5

    因为for循环每循环一次,会重新赋值给i,所以结果会被覆盖。
    // 第一次循环
    i = 1
    TracePrint(i)
    i = i - 1
    // 第二次循环
    i = 2
    TracePrint(i)
    i = i - 1

  • 赵肖诚 8月前
    6
    如何实现i可以多循环一次呢
  • 赵肖诚 8月前
    7
    在循环里加了i=i-1,循环次数还是不会增加一次
  • 谢老师 8月前
    8
    赵肖诚 如何实现i可以多循环一次呢

    原:

    For i = 0 To 10 step 1

        ...
    Next


    新:

    For i = 0 To 11 step 1
        ...
    Next


  • 谢老师 8月前
    9
    赵肖诚 在循环里加了i=i-1,循环次数还是不会增加一次
    For循环中的I 是无法改变的,建议Debug查看运行过程!
返回
发新帖