数字1和字符串1有何区别[已解决]
本帖最后由 haijie1223 于 2013-3-31 23:22 编辑Local $x=1
If $x=1 Then MsgBox(0,"","Number 1")
If $x="1" Then MsgBox(0,"","String 1")都成立,难道是没有区别? 区别用 IsNumber 或 IsString 判断 这个问题问的好 ........ 蛋疼的 Variant .................
查了帮助 【语言相关 - 数据类型】
AutoIt 中只存在一种数据类型,那就是Variant.Variant可用来存储纯数字的或字符串类型的数据,
而程序具体如何看待这些数据则要看用户的使用方式;
举例来说,若您试图让两个变量相乘, 那么它们将被当作数字类型(指具有数学意义的可供计算的值)使用,
而若您试图连接(拼合)两个变量则它们将被认做字符串(String类型).
一些例子:
10 * 20 等价于 数字 200 (* 是乘法运算符)
10 * "20" 等价于 数字 200
"10" * "20" 等价于 数字 200
10 & 20 等价于 字符串 "1020" (& 是字符串连接运算符) 进一步验证把最近发的 一段判断C盘系统版本的代码改一下
;测试环境winxp
$vercode = ""
$sysver = ""
If (Not FileExists("C:\WINDOWS\syswow64"))And FileExists("C:\WINDOWS\system32\kernel32.dll") Then
$vercode = FileGetVersion("C:\WINDOWS\system32\kernel32.dll","FileVersion")
Else
$vercode = FileGetVersion("C:\WINDOWS\syswow64\Wow64.dll","FileVersion")
EndIf
$sysver = StringLeft($vercode, 3)
Switch $sysver
Case "5.0"
$sysver = "Win 2000"
Case 5.1;;;;;;这行改了,把字符串改成数值,也可以
$sysver = "Win XP"
Case "5.2"
$sysver = "Win 2003 server"
Case "6.0"
$sysver = "Vista"
Case "6.1"
$sysver = "Win7"
EndSwitch
If FileExists("C:\WINDOWS\syswow64") Then
$sysver &= " --- x64"
Else
$sysver &= " --- x86"
EndIf
MsgBox(0, "C盘系统为", $sysver)
回复 3# veket_linux
看来区别不算大,多数情况可以通用了~ 回复 5# haijie1223
auto只有数字类型 AutoIt会自动进行转换的 回复 7# mbdnmt
不会 回复 8# netegg
跟你的表达式有关$i = 1
$a = $i + 2
$b = $i & "2"
If IsNumber($a) Then MsgBox(0, "$a is Number", "$a is " & $a)
If IsString($a) Then MsgBox(0, "$a is String", "$a is " & $a)
If IsNumber($b) Then MsgBox(0, "$b is Number", "$b is " & $b)
If IsString($b) Then MsgBox(0, "$b is String", "$b is " & $b)
回复 1# haijie1223
补充说明:
当表达式 If $x = 1时, AutoIt会把$x先转换为Number再和1比较
当表达式 If $x = "1"是,AutoIt会把$x先转换为String再和"1"比较。
在AutoIt中,变量类型是自动进行转换的。 (很多不需要声明变量类型的脚本语言也是,如Ruby、Tcl)
通过以下这个例子可以再体会一下:
$i = 1
$a = $i + 2
$b = $i & "2"
If IsNumber($a) Then MsgBox(0, "$a is Number", "$a is " & $a)
If IsString($a) Then MsgBox(0, "$a is String", "$a is " & $a)
If IsNumber($b) Then MsgBox(0, "$b is Number", "$b is " & $b)
If IsString($b) Then MsgBox(0, "$b is String", "$b is " & $b) 回复 10# mbdnmt
谢谢 回复 9# mbdnmt
这是通过操作符进行的,不是auto本身的
页:
[1]