中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [CMD]难道是IF判断无法判断数字大小了?
作者:
标题: [CMD]难道是IF判断无法判断数字大小了? 上一主题 | 下一主题
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『楼 主』:  [CMD]难道是IF判断无法判断数字大小了?


  一次无聊在把玩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


2006-11-15 10:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 2 楼』:  

你没有眼花, 这就是整型数据的溢出. 基本整形变量如果为2147483644, 溢出后为-4.

用下面这个演示程序输入2147483644就明白了.

附件 1: test.rar (2006-11-15 10:33, 7.16 K, 下载附件所需积分 1 点 ,下载次数: 18)


业精于勤而荒于嬉,形成于思而毁于随。
2006-11-15 10:33
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  


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

                      p.s. 我还以为附件是一个溢出的演示录象呢。   =_=


2006-11-15 10:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pengfei
银牌会员




积分 1218
发帖 485
注册 2006-7-21
来自 湖南.娄底
状态 离线
『第 4 楼』:  

演示程序只是让你输入一个数字, 如果输入的输出不相同证明是溢出.

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

这要讲到数据在内存中的存放形式了. 具体就不多说了, 我怕我也讲不明白...



业精于勤而荒于嬉,形成于思而毁于随。
2006-11-15 10:48
查看资料  发送邮件  发短消息 网志  OICQ (573381312)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: