Board logo

标题: [其他] 批处理命令for /l 语句步长=0 时,将陷入无限循环? [打印本页]

作者: yzstwz    时间: 2012-2-15 08:29     标题: 批处理命令for /l 语句步长=0 时,将陷入无限循环?

教程说 for /l 语句步长=0 时,将陷入无限循环
为什么在本机cmd窗口运行 For /L %i in (3,0,-5) do echo %i 却没有陷入无限循环?
谢谢!
作者: CrLf    时间: 2012-2-15 10:48

步数非负的情况下,起始值高于终止值时不满足循环条件
作者: yzstwz    时间: 2012-2-15 23:44

谢谢
步长非负的情况下,起始值高于终止值时不满足循环条件
循环条件不知是不是指:起始值、步长和终止值能不能形成数列?
(3,0,-5) 形成 数列 3,3,3,……(各项都=起始值的一个无穷数列)

实际上,只要步长=0,都形成各项都=起始值的一个无穷数列
运行以下两句 (起始值<或=终止值)其结果都是无限多次 echo 起始值0
For /L %i in (0,0,1) do echo %i
For /L %i in (0,0,0) do echo %i
唯独下句(起始值>终止值)例外
For /L %i in (3,0,-5) do echo %i

如果说批处理就是这样规定的,这个规定的道理又是什么呢?
作者: yzstwz    时间: 2012-2-17 14:55

从For /L %i in (3,0,-5) do echo %i 的运行结果来看,能否说
1,步长=0→陷入无限循环
2,无有效数列元素→无从执行
不够精确
作者: batman    时间: 2012-2-17 15:27

不是什么事都要问个究竟,比如1加1为什么等于2。。。
作者: find    时间: 2012-2-17 20:44

微软的程序员觉得这样规定比较cool
作者: yzstwz    时间: 2012-2-21 08:17

1+1=2 是公理或定义 无需证明 看来1楼的问题也是
1+1=2 是一切数学定理的基础,所以它也是无法用数学的方法证明
虽不能证明 但也可以说明 网上有说明如下:
在自然数中我们有如下定义:
(1)1为单位;
(2)a+1=a的后继;
(3)我们规定(或者说记作):1的后继是2,2的后继是3,3的后继是4,等等
(4)自然数加法的定义:1+1=1的后继=2
作者: yzstwz    时间: 2012-2-21 08:38

For /L  命令在预处理时 符合下列条件之一的,规定将终止命令的执行

步长值<0 且 起始值<终止值

步长值>=0 且 起始值>终止值




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2