标题: [系统相关] [已解决]批处理if中,== 与equ 这2个,在什么情况下会有区别? [打印本页]
作者: ygqiang 时间: 2011-12-31 23:04 标题: [已解决]批处理if中,== 与equ 这2个,在什么情况下会有区别?
本帖最后由 pcl_test 于 2017-6-8 21:01 编辑
- rem 获取本机ip
- for /f "tokens=14 delims=: " %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b
- echo %fsip%
- pause
-
- if "%fsip%" equ "10.10.9.200" (
- goto :set0
- ) else if "%fsip%" equ "10.10.93.100" (
- goto :set0
- ) else if "%fsip%" equ "10.10.94.200" (
- goto :set0
- ) else if "%fsip%" equ "10.10.127.200" (
- goto :set0
- )
- goto :set1
复制代码
- rem 获取本机ip
- for /f "tokens=14 delims=: " %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b
- echo %fsip%
- pause
-
- if "%fsip%" == "10.10.9.200" (
- goto :set0
- ) else if "%fsip%" == "10.10.93.100" (
- goto :set0
- ) else if "%fsip%" == "10.10.94.200" (
- goto :set0
- ) else if "%fsip%" == "10.10.127.200" (
- goto :set0
- )
- goto :set1
复制代码
上面这2个代码,在什么情况下,会有不同的执行效果?
或者说:,== 与equ 这2个符号,分别都是用在什么情况下的? 会有什么区别呢?
作者: cjiabing 时间: 2012-1-1 00:39
没有什么区别啊,看说明:- IF [NOT] string1==string2 command
- EQU - 等于
复制代码
两者都可以用。
作者: CrLf 时间: 2012-1-1 00:59
if 15 equ 0xf echo 数值比较时,15等于0xf
作者: ygqiang 时间: 2012-1-1 01:02
EQU是运算符,只能比较数字
==可以比较中文字符和数字英文等符号
实际测试了。上面的2个代码,都能正确运行。
作者: Demon 时间: 2012-1-1 01:10
都是夜猫子。
作者: CrLf 时间: 2012-1-1 01:30 标题: 标题
回复 5# Demon
呵呵,被窝里玩手机呢,中午睡过头了。
回复 4# ygqiang
数值比较时,进制的不同不影响结果,所以1等于01,而以字符串比较时,只是从左向右单纯逐字对比,这时01明显比1多了个0
作者: awk 时间: 2012-1-1 09:53
回复 4# ygqiang
谁说的equ只能比较数字?
作者: ygqiang 时间: 2012-1-1 11:29
我都搞糊涂了。
到底equ与==有什么不同呢?都用在什么场合下呢?
作者: CrLf 时间: 2012-1-1 11:32
寒夜孤星新浪博客里有详细解释
作者: ygqiang 时间: 2012-1-1 11:34
嗯。多谢版主。
祝元旦快乐啊。
作者: ygqiang 时间: 2012-1-1 11:41
http://blog.sina.com.cn/s/blog_51a4af870100f6bl.html
== 与 EQU 之间的区别:
作为初学者,很容易将 == 与 EQU 混淆的认为他们一样,其实这是不对的。== 是用来比较相同的,换句话说,就是比较字符串是否完全相同的。而 EQU 是比较运算符,含有运算的功能,换句话说,是可以在比较之前转换数字为对应的数值,然后再比较。
既然说到了数值,我们就扩展讲一下:数值是指十进制的数字,在前缀加 0× (这里x忽略大小写)则表示十六进制数字,加 0 则表示八进制数字。因此,0x12 与 18 相同,也与 022 相同,八进制表示法容易引起混淆。例如,08 和 09 不是有效数字,因为 8 和 9 不是有效的八进制数字。
所以,在使用 == 比较时,0x12、022和18是不相等的,但在使用 EQU 比较时,他们是相等的,因为他们对应的数值都是18!
作者: ygqiang 时间: 2012-1-1 11:41
基本上看懂了。
这样看来,就1楼的情况来说,用equ与==,是没有区别的。
作者: x9tiancmd 时间: 2012-1-4 13:14
本帖最后由 x9tiancmd 于 2012-1-4 13:27 编辑
哎' 我来说句吧!
== 是比较 阿思ka码及支持的字符完全等价 if /i 时相对等价 !
右集合比较机器码
完全匹配,也就是内存寄存类型都完全一至,遇到char类寄存时 0101 和 0141 无if /i 参数时是不匹配的 有该参数 时匹配!
注:0101 0141char类表示 大小a 如果看成整型的话 十进制差值32
equ 整型 单精度型
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |