cihron 发表于 2016-3-21 23:10:41

[已解决]今天忽然发现一段有意思的代码,不知是否是autoit的BUG,大家看看

本帖最后由 cihron 于 2016-3-24 18:58 编辑

今天忽然发现一段有意思的代码,不是是否是autoit的BUG。

发来大家看看,不妨先猜想下结果。。。$n = 10

For $i = 0 To $n
        ConsoleWrite( $i & @CRLF )
        $n -= 1
Next

haijie1223 发表于 2016-3-22 07:33:11

循环有啥BUG啊,这个代码输出11行,0-10。难道不是这样?

zch11230 发表于 2016-3-22 09:01:10

楼主是想让$n在每次循环的时候值都为最新么?那应该用do、while循环吧。

zldfsz 发表于 2016-3-22 09:40:15

一旦进入循环体,循环初值、终值、步长都已经确定了,是确切的值,不可更改

afan 发表于 2016-3-22 11:52:35

综合楼上各位大侠的见解 {:face (238):}

cihron 发表于 2016-3-22 16:13:26

回复 2# haijie1223


    我试图在循环里改变循环变量的值, 而提前中止循环。

cihron 发表于 2016-3-22 16:15:54

回复 4# zldfsz


    头回发现,也不太明白,为什么要设计成这样的?

 还有哪些语言使用这样的设计?

haijie1223 发表于 2016-3-22 16:21:16

回复 6# cihron


    那就问怎么终止循环,BUG啥啊?$n = 10
For $i = 0 To $n
      ConsoleWrite( $i & @CRLF )
      $n -= 1
                If $n=5 Then ExitLoop
Next

cihron 发表于 2016-3-22 16:22:21

回复 5# afan


    调试了老半天才发现这个问题,汗~

    貌似autoit近些年一直没有再更新,班竹有啥消息透露没?

    挺好用的一个工具,代码多了有点费劲,要是能支持面向对象和异常处理就完美了问题。

cihron 发表于 2016-3-22 16:23:32

写在这里给大家做个参考吧,肯定有人和我一样,没注意过这个问题。

love008 发表于 2016-3-22 20:42:24

这标题和内容表达太准确了!!!!!

chamlien 发表于 2016-3-24 15:42:28

值在循环体里执行,这有什么不对吗

skyfree 发表于 2016-3-26 07:39:04

for循环内改变循环上限,这种算法本身就有极大的BUG!
页: [1]
查看完整版本: [已解决]今天忽然发现一段有意思的代码,不知是否是autoit的BUG,大家看看