中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-02 09:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [CMD]难道是IF判断无法判断数字大小了? 查看 1,201 回复 3
楼 主 [CMD]难道是IF判断无法判断数字大小了? 发表于 2006-11-15 10:13 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线

  一次无聊在把玩CMD的时候,发现CMD的if判断语句竟然无法判断数字大小了。
  
  大家在命令提示符里面试试下面这个语句:

if 2147483644 gtr -4 (echo 是.) else (echo 否)


  呵呵,不会是自己的眼睛花了吧?

  在看看下面这个:

if 2147483644 gtr -3 (echo 是.) else (echo 否)

 
  不知道是什么原因,希望高手门可以解释一下CMD的这个小bug。

p.s. 我的测试环境是: CMD @ Windows XP SP2
2 发表于 2006-11-15 10:33 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
20年会员
UID 58987
来自 湖南.娄底
状态 离线
你没有眼花, 这就是整型数据的溢出. 基本整形变量如果为2147483644, 溢出后为-4.

用下面这个演示程序输入2147483644就明白了.
附件
test.rar (7.16 KiB, 下载附件所需积分 1 点, 下载次数: 18)
业精于勤而荒于嬉,形成于思而毁于随。
3 发表于 2006-11-15 10:44 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线

  恩,输入之后值变为4了。但是看不到演示过程,或者是如何溢出的。

p.s. 我还以为附件是一个溢出的演示录象呢。 =_=
4 发表于 2006-11-15 10:48 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
20年会员
UID 58987
来自 湖南.娄底
状态 离线
演示程序只是让你输入一个数字, 如果输入的输出不相同证明是溢出.

当你输入2147483644得到-4就是溢出.

这要讲到数据在内存中的存放形式了. 具体就不多说了, 我怕我也讲不明白...
业精于勤而荒于嬉,形成于思而毁于随。
论坛跳转: