chamlien 发表于 2017-9-29 12:08:19

再问个简单问题,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

但是上方案列好像与我的案例有点不一样,求解~~~~~~~~~~~~

kk_lee69 发表于 2017-9-29 13:07:16

回复 1# chamlien

請使用 ==

If $a=="a" Then MsgBox(0,0,0)

fenhanxue 发表于 2017-9-29 16:58:44

是的,这个等号的坑貌似一不注意就会产生一些没有注意的小BUG
我现在一般都是这样写:
1)对于数值的比较
ifnumber($a) = number($b)then
2) 对于字符串的比较
ifstring($a) == string($b) then

zghwelcome 发表于 2017-9-29 17:09:07

Local $a=0
If $a="a" Then MsgBox(0,0,0)

$a = 0 , 这是一个数值,第二行的=号自然被解析为一次数值判断,那么 后面的字符串"a" 先转换为数值再与前面的数字 0 比较,字符串转换为数值为0
好像不奇怪吧

chamlien 发表于 2017-9-29 17:54:52

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?

chamlien 发表于 2017-9-29 18:27:30

回复 3# fenhanxue


    是的,今天找了半天,才发现是等号问题

zghwelcome 发表于 2017-9-29 19:05:38

回复 5# chamlien


    是的

yamakawa 发表于 2017-9-29 20:20:30

回复 6# chamlien


    因为字符串不是数值非 是 0.。不信你把第一个改成1就可以看见效果了

破帽遮颜 发表于 2017-10-1 21:53:13

学习一下先,留意这样的小细节

yonggl 发表于 2017-10-2 08:29:27

= 判断两个值是否相等.比如 If $var= 5 Then    (如果变量 $var 的值为 5 则条件成立). 用于字符串时不区分大小写
== 判断两个字符串是否相等.左方和右方的值将会转化成字符串,并区分大小写,这个运算只能用于区分字符串大小写的比较.

所以字符串比较需要2个等号

柚子爸爸 发表于 2017-10-3 21:16:52

回复 3# fenhanxue


      国庆快乐分享快乐

ura 发表于 2017-10-4 07:58:11

Local $a = '0'
If $a = "a" Then MsgBox(0,0,0)

如上回答, 字符比较使用 ==

onestone01 发表于 2017-10-4 07:58:23

字符串加引号

Local $a='0'
If $a='a' Then MsgBox(0,0,0)

zch11230 发表于 2017-10-6 13:11:34

我以为au3不支持==呢,其它语言一直都是用的==,以后看来在比较时用==好一点.
页: [1]
查看完整版本: 再问个简单问题,a值为0,判断a="a"却成立,为何?