foboy 发表于 2011-5-11 00:24:39

不测试,谁能知道这个运行结果?

$a='500'
$b='1000'
ConsoleWrite($a<$b)

谁知道结果是true还是false?

foboy 发表于 2011-5-11 00:32:43

他NND, 用了这么长时间的AU3,今天才发现我有一个想法始终是错误的。
哎, 要都改过来可就麻烦死了。

happytc 发表于 2011-5-11 00:39:12

谁知道结果是true还是false?
foboy 发表于 2011-5-11 00:24 http://www.autoitx.com/images/common/back.gif


    这还用试嘛,当然是False了,因为这时比较的是字符串,而不是数字,当然5<1是False了
学过别的语言 --- 象C,必须明确申明类型,就非常明了,不会有什么问题。

象au3这样的,为了减少使用它的难度,它“聪明”地自动判断是什么类型,而不需要写的人去明确。就会存在糊涂的情况

风行者 发表于 2011-5-11 01:31:23

false,同为字符串对比,应该以asc码对比吧,我是这样想

foboy 发表于 2011-5-11 01:36:10

本帖最后由 foboy 于 2011-5-11 01:37 编辑

在我的印象里,既然AU3是自动判断数据类型,涉及到数学运算应该把纯数字的字符串当数字处理啊。
谁知道我错了这么久{:face (319):}

ceoguang 发表于 2011-5-11 01:59:44

$a='500' == string(500)
$b='1000' == string(1000)

happytc 发表于 2011-5-11 05:48:15

本帖最后由 happytc 于 2011-5-11 05:49 编辑

在我的印象里,既然AU3是自动判断数据类型,涉及到数学运算应该把纯数字的字符串当数字处理啊。
谁知道我错 ...
foboy 发表于 2011-5-11 01:36 http://www.autoitx.com/images/common/back.gif

因为你赋值时加了引号呀
你改正
$a=500
$b=1000
ConsoleWrite($a<$b)
试试

3mile 发表于 2011-5-11 09:53:01

回复 7# happytc
那如果是这样的情况呢?还是当成字符串来处理吗?
$a=500
$b='500'
ConsoleWrite($a<$b)

chinafla 发表于 2011-5-11 09:56:43

刚才我也遇到这个问题 stringreplace
要用这个 string() 转换才能替换数字 ...
php 里面是自动的。。。

happytc 发表于 2011-5-11 10:25:18

回复happytc
那如果是这样的情况呢?还是当成字符串来处理吗?
3mile 发表于 2011-5-11 09:53 http://www.autoitx.com/images/common/back.gif

我没有测试前根据的别的语言同样情形猜了下,au3也跟别的语言一样会‘强制转换’后来比较。

就好象C里若把Float类型跟Double类型比较时会自动把Float转成Double后再比较一样

3mile 发表于 2011-5-11 10:30:55

回复 10# happytc
对了,就是这样.
C也一样会"聪明"地自动判断数据类型吧?

papapa314 发表于 2011-5-11 10:40:12

回复 5# foboy


    哈哈,老大也有出错的时候。。。你的数字已经加引号了,所以就是字符串了。我之前还碰见过一个情况,就是用正则提取出来的数字有时候也是字符串类型的
http://www.autoitx.com/thread-23585-1-1.html

chinafla 发表于 2011-5-11 11:38:24

foboy 内存地址 哈哈 我是你的客户

foboy 发表于 2011-5-12 13:49:58

原来是你啊, 以后多交流。我在做游戏数据的通用调用接口。借助AutoItObject UDF做的。如果你以后也经常做这块,可以互相共享一下资源,节省劳动力。

小A 发表于 2011-5-13 05:32:04

楼主,这是什么意思啊?
页: [1]
查看完整版本: 不测试,谁能知道这个运行结果?