作者在第5节"循环 - 在线和为"中使用K&R的"C编程语言"第60页时,作者说:
for语句
Run Code Online (Sandbox Code Playgroud)for (expr_1; expr_2; expr_3) statement相当于
Run Code Online (Sandbox Code Playgroud)expr_1; while (expr_2) { statement expr_3; }除了继续的行为,这在3.7节中描述.
在语法上,for循环的三个组件是表达式.最常见的是,expr_1和expr_3是赋值或函数调用,expr_2是关系表达式.尽管必须保留分号,但可以省略这三个部分中的任何一个.如果省略expr_1或expr_3,则只是从扩展中删除它.
那么作者的意思是"如果省略expr_1或expr_3,它就会从扩展中删除"?作者的意思是哪种扩展?
当作者说扩展时,他们指的是while循环等价物.
也就是说,如果说expr_1和expr_3被省略,则循环等效于
while (expr_2) {
statement
}
Run Code Online (Sandbox Code Playgroud)
请注意,文本现在有点过时,因为从C99开始,您可以expr_1在for循环部分声明变量,而不会将这些变量泄漏到周围的范围中.现在,等效的扩展并不那么简单.