再问个简单问题,a值为0,判断a="a"却成立,为何?
1、Local $a=0
If $a="a" Then MsgBox(0,0,0)
____________________________
2、
Local $a=0
If $a=="a" Then MsgBox(0,0,0)
上例1中,1个等号,数字与字符串居然会判断为相等?为何呢?难道"a"的值也是0?把"a"改为任意字符串,if $a="vbsdsda" 还是为真,为什么呢?
今天写代码,排查了半天,原来是一个等号的原因,但是不得其解。搜索论坛也发现有该案列,链接:http://www.autoitx.com/forum.php?mod=viewthread&tid=50997&highlight=%B5%C8%BA%C5
但是上方案列好像与我的案例有点不一样,求解~~~~~~~~~~~~ 回复 1# chamlien
請使用 ==
If $a=="a" Then MsgBox(0,0,0) 是的,这个等号的坑貌似一不注意就会产生一些没有注意的小BUG
我现在一般都是这样写:
1)对于数值的比较
ifnumber($a) = number($b)then
2) 对于字符串的比较
ifstring($a) == string($b) then Local $a=0
If $a="a" Then MsgBox(0,0,0)
$a = 0 , 这是一个数值,第二行的=号自然被解析为一次数值判断,那么 后面的字符串"a" 先转换为数值再与前面的数字 0 比较,字符串转换为数值为0
好像不奇怪吧 Local $a=0
If $a="a" Then MsgBox(0,0,0)
$a = 0 , 这是一个数值,第二行的=号自然被解析为一次数值判 ...
zghwelcome 发表于 2017-9-29 17:09 http://www.autoitx.com/images/common/back.gif
所有字符串转为数值,值均为0? 回复 3# fenhanxue
是的,今天找了半天,才发现是等号问题 回复 5# chamlien
是的 回复 6# chamlien
因为字符串不是数值非 是 0.。不信你把第一个改成1就可以看见效果了 学习一下先,留意这样的小细节 = 判断两个值是否相等.比如 If $var= 5 Then (如果变量 $var 的值为 5 则条件成立). 用于字符串时不区分大小写
== 判断两个字符串是否相等.左方和右方的值将会转化成字符串,并区分大小写,这个运算只能用于区分字符串大小写的比较.
所以字符串比较需要2个等号 回复 3# fenhanxue
国庆快乐分享快乐 Local $a = '0'
If $a = "a" Then MsgBox(0,0,0)
如上回答, 字符比较使用 == 字符串加引号
Local $a='0'
If $a='a' Then MsgBox(0,0,0)
我以为au3不支持==呢,其它语言一直都是用的==,以后看来在比较时用==好一点.
页:
[1]