据我了解“for(;;)”没有初始条件,没有测试条件,也没有增量条件,因此永远循环,我很好奇为什么测试条件在每个循环中都成功。
是否空表达式“;” 在 C 中评估为真?或者这是编译器处理的特殊情况?
据我了解“for(;;)”没有初始条件,没有测试条件,也没有增量条件,因此永远循环,我很好奇为什么测试条件在每个循环中都成功。
是否空表达式“;” 在 C 中评估为真?或者这是编译器处理的特殊情况?
这是由for
C 语言中的语句定义的。6.8.5.3/2“for
声明”:
子句 1 和表达式 3 都可以省略。 省略的表达式 2 被非零常量替换。
C 语言没有“空表达式”之类的东西。如果语句中缺少任何表达式,从for
语法上讲,这意味着整个表达式被省略,不是说它在那里,而是空的。
一个for
省略了第二个表达式的循环永远循环,因为for
语句的规范是这样说的。即它是一个专门针对for
单独的专用功能,而不是更通用的功能。
另外(一个术语的挑剔)只有第二个表达式实际上是一个条件。第一个和第三个并不是真正的“条件”。