leilei123 发表于 2012-9-19 15:16:53

AU3实例脚本问题咨询[已解决]

本帖最后由 leilei123 于 2012-10-6 09:47 编辑

实例:
Dim $Ten,$Twenty,$Fifty
Dim $s
$s=""
For $Ten=0 To 20
    For $Twenty=0 To 20
      For $Fifty=0 To 12
         If $Ten+$Twenty+$Fifty=20 And $Ten*10+$Twenty*20+$Fifty*50=600 Then
            $s=$s&"10 元:"&$Ten&"张" &"20 元:"&$Twenty&"张"&"50 元:"&$Fifty&"张"&@CRLF
EndIf
Next
Next
Next
MsgBox(0,"循环结构实例",$s)

疑问:
$s=""
为什么需要定义空字符,我试过把定义的空字符串去掉,输出结果会完全不一样,但就是不明白原因,请指教!

whitehead 发表于 2012-9-19 17:13:50

有和没有运行后结果没有区别

yunnl 发表于 2012-9-19 21:36:44

没有区别额。。。

32714107 发表于 2012-9-19 22:20:51

本帖最后由 32714107 于 2012-9-19 22:22 编辑

把定义的空字符串去掉,输出结果会完全一样的,至于原因。我认为是autoit本身程序就是这样规定的,在skyfree老前辈写的autoit学习指南中(写于2008年8月11日)第二章第二节最后有这么一句话:“autoit中,任何变量如果在声明后不为其赋值,那么其默认为空字符”(在2011年10月出版的au3自学手册中没找到这句话,感觉还是加上的好)

半芯竹 发表于 2012-9-19 23:18:33



注销$s=' '   前后对比。无差异。。

leilei123 发表于 2012-9-21 11:10:34

$s=$s&"10 元:"&$Ten&"张" &"20 元:"&$Twenty&"张"&"50 元:"&$Fifty&"张"&@CRLF

第2个$s有和没有输出是不一样的吧,这个地方的$s的作用能给解释不,不理解,谢谢各位

半芯竹 发表于 2012-9-21 15:24:41

本帖最后由 半芯竹 于 2012-9-21 15:31 编辑

Local $a=''
For $i =1 To 4
        $a=$a&$i&@CRLF   
Next
MsgBox(0,0,$a)

如以上例子,$a只是一个变量,跟你上面的例子一样,循环四次,$a就递增四次。
如果没有第二个$a[等号右边的],$a就只能等于最后一个循环的得数,因为$a只是一个变量。

如下例子
Local $a=''
For $i =1 To 4
      $a=$i&@CRLF   
Next
MsgBox(0,0,$a)
这是等号右边没有$a的情况,第一次循环时,$a=1,第二次是$a=2,这个时已经将变量$a的值重新给定义了
直到最后的第四次循环时,$a=4,这时,才是$a变量最终的值。。因为$a没有递加。

leilei123 发表于 2012-9-22 10:38:15

回复 7# 半芯竹

我怎么感觉
Local $a=''
For $i =1 To 4
      $a=$i&@CRLF   
Next
MsgBox(0,0,$a)
这个样子$a   也是4次循环递增的哪?
For $i =1 To 4
      $a=$i&@CRLF   
$i=1,$a=1 然后换行,直到$i=1,$a=4
最后问下输出结果是字符还是数值?

半芯竹 发表于 2012-9-22 10:41:29

回复 8# leilei123


    你这个$a的值没有递增好不好,只不过是不断更改四次内容。。并没有相加起来。。

leilei123 发表于 2012-9-22 11:38:47

{:face (229):}回复 9# 半芯竹


    Local $a=''
For $i =1 To 4
      $a=$a&$i&@CRLF   
Next
MsgBox(0,0,$a)

我的理解是$i=1,$a=""1也就是1然后回车
          $i=2,$a=1&2,也就是12然后回车
          ·······
页: [1]
查看完整版本: AU3实例脚本问题咨询[已解决]