c - 为什么这个循环永远存在?
问题描述
int main() {
for(3;2;1)
printf("hello\n")
}
我认为这个循环甚至不会被执行。AFAIK 我们必须定义一个变量;提出条件;增加减少。然而,在这段代码中,我计算的东西都不存在。所以我认为这个程序应该崩溃。但它会永远持续下去。
解决方案
因为退出条件 (2) 始终为真。
for
这是有效的,因为语句的格式是
for (clause-1;expression-2;expression-3)
Whereclause-1
可以是声明(例如int i = 0
)或表达式。
在您的情况下,您有三个表达式,因此该语句在语法上仍然有效。
当expression-2
计算结果为 false (0) 时,循环退出,在您的情况下,它永远不会这样做,因为它是一个非零常量 (2)。
推荐阅读
- reactjs - 反应材料容器页眉主要和页脚它未使用页眉中的 flexbox 对齐
- javascript - SVG 成功消息动画
- django - 测试中 Django 3.0 与 3.1 中的 MEDIA URL 不一致
- javascript - 使用函数获取数据 - JavaScript 中的 sqlite3
- sql-server - 键集分页 - 按多列搜索词过滤
- java - 为什么 DatagramSocket 在某些电脑中不发送
- angular - 在 Angular 中按字母顺序排序
- c# - 警告 MSB3290:无法为类型库创建包装程序集
- postgresql - 当带有.Net Core的Postgres sql中的一个数据库中有多个模式可用时,如何仅为一个模式生成实体上下文?
- azure-data-factory - 如何在 Azure 数据工厂的 ForEach 活动中创建迭代范围变量