[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

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

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

TOP

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

TOP

微软的程序员觉得这样规定比较cool

TOP

不是什么事都要问个究竟,比如1加1为什么等于2。。。
***共同提高***

TOP

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

TOP

谢谢
步长非负的情况下,起始值高于终止值时不满足循环条件
循环条件不知是不是指:起始值、步长和终止值能不能形成数列?
(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

如果说批处理就是这样规定的,这个规定的道理又是什么呢?

TOP

步数非负的情况下,起始值高于终止值时不满足循环条件

TOP

返回列表