标题: [CMD]难道是IF判断无法判断数字大小了? 
[打印本页]
作者: lxmxn     
时间: 2006-11-15 10:13    
标题: [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
 
作者: pengfei     
时间: 2006-11-15 10:33
你没有眼花, 这就是整型数据的溢出. 基本整形变量如果为2147483644, 溢出后为-4.
用下面这个演示程序输入2147483644就明白了.
附件
1: 
 test.rar (2006-11-15 10:33, 7.16 KiB, 下载附件所需积分 1点
,下载次数: 18)
作者: lxmxn     
时间: 2006-11-15 10:44
  恩,输入之后值变为4了。但是看不到演示过程,或者是如何溢出的。
                      p.s. 我还以为附件是一个溢出的演示录象呢。   =_=
作者: pengfei     
时间: 2006-11-15 10:48
演示程序只是让你输入一个数字, 如果输入的输出不相同证明是溢出.
当你输入2147483644得到-4就是溢出. 
这要讲到数据在内存中的存放形式了. 具体就不多说了, 我怕我也讲不明白...