c - 为什么这个循环会无限运行?for循环中的逗号分隔条件
问题描述
程序代码:
int main()
{
int i;
for (i = 0; i < 0, 5; i++)
printf("%d ", i);
return 0;
}
上面的循环无限次执行。
是什么i<0,5
意思,如何评估?
解决方案
根据运算符优先级,这被解释为(i < 0), 5
。逗号运算符评估所有语句,但丢弃除最后一个之外的值。因此,出于实际目的,循环读取为
for (int i = 0; 5; ++i) {...}
因为非零值true
在 C/C++ 中被解释为,这等价于:
for (int i = 0; true; ++i) {...}
这是一个无限循环。
推荐阅读
- mysql - 是否可以直接连接到mysql数据库而无需rest api?
- flask - flask-CKEDITOR 发回 html 而不是纯文本
- python - 如何将命令行参数传递给仪表测试?
- jquery - ASP.NET MVC 绑定主 - 详细信息始终为空
- java - 需要将数据存储在服务器上而不是客户端的浏览器窗口/选项卡上
- javascript - UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'guildes' of undefined Discord.js
- python - 边界框不显示
- python - 如何以 Python 中的日期时间格式将结束日期设为开始日期前 11 个月?
- java - 如何使用泛型来提供“通用 getter 方法”?
- php - 如何在邮递员响应中解决您没有访问端点所需的范围