TC官方合作论坛

标题: 关于TC6.1的数组问题 [打印本页]

作者: chen71512    时间: 2016-5-29 14:25
标题: 关于TC6.1的数组问题
代码说明:
    变量 aa=数组()
    aa[0]=1
    aa[1]=2
    aa["这是特殊"]="特殊"
    变量 数量 = 数组大小(aa)
    遍历(变量 i = 0; i < 数量; i++)//这样写正常
        调试输出(aa[i])
    结束

    遍历(变量 i = 0; i < 数组大小(aa); i++)//这样写会出现死循环并且数组所有元素都为空
        调试输出(aa[i])
    结束

求解释?

作者: 言术    时间: 2016-5-29 16:27
你这两个遍历,前三次都是一样的,最主要是看第四次:
第一个退出条件,是在进入遍历前是计算好的确定值,所以当i等于3,条件为3<3,为假,跳出循环
第二个退出条件,是每次遍历后重新计算的,而当i等于3时,调试输出(aa[3]),这个值不存在,但这一步就相当于给aa[3]赋值为null。
此时数组为  array("0"=1,"1"=2,"这是特殊"="特殊","2"=null) ,取数组大小为4
所以退出条件为 3 < 4 ,为真,继续循环,此后为4 < 5 , 5 < 6 , 6 < 7........... 等等
如果你把   aa["这是特殊"]="特殊"   去掉就没事了

你自己下断点,慢慢调试你就明白了
代码:
    遍历(变量 i = 0; i < (数量=数组大小(aa)); i++)
        调试输出(aa[i])
        调试输出(aa)
    结束
作者: chen71512    时间: 2016-5-30 09:52
言术 发表于 2016-5-29 16:27
你这两个遍历,前三次都是一样的,最主要是看第四次:
第一个退出条件,是在进入遍历前是计算好的确定值, ...

确实想不到的是调试输出一个有可能没有的数组下标时,会自动增加一个数组元素.这特性要适当回避下,因为好些时候脚本里的元素个数起到决定性判断作用,谢谢释疑.




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1