如果不向For循环提供条件,该怎么办?

问题描述

请考虑以下代码段:

int numbers[9] = {5,2,78,23,8,9,3,12,97};
int arrLength = (sizeof(numbers) / sizeof(int));

for(int i = 0; arrLength; i++) {
    printf("%d\n",numbers[i]);
}

我将数组长度作为循环的第二个参数,但没有为何时停止提供条件。外面给出了我数组中的9个数字,然后继续。这是程序输出的示例。以这种方式,程序可以轻松输出100多个数字。谁能解释比赛的内容?

enter image description here

解决方法

在这种情况下,提供了条件

 for(int i = 0; arrLength; i++)

相同
for(int i = 0; arrLength != 0; i++)

换句话说,控制表达式(也就是条件检查)应该取值为TRUE才能继续执行循环体。

来自C11,第6.8.5章,P4

迭代语句使称为循环体的语句重复执行,直到控制表达式的值等于0。[...]

,脚注158,for循环

[...]控制表达式expression-2指定在每次迭代之前进行的求值,以便继续执行循环,直到表达式比较等于0; [...]

如果未提供条件,则将其视为非零(始终为真值)。

第6.8.5.3章,第2段

子句1和expression-3都可以省略。省略的expression-2替换为非零常量。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...