我在阅读 C 中的循环时,发现了一行有趣的代码,但我无法真正理解。如果有人能向我解释这一行,我将不胜感激:
for (; count>0; count--, j++)
但是整个代码是这样的:
while(getline(&line, &count, input) != -1)
{
for ( ; count>0; count--, j++)
sscanf(line, "%d", &array[i]);
i++;
}
变量count
是size_t
类型,int i,j = 0
和FILE *input;
为读取存储在文本文件中的一系列数字。
提前致谢。
最佳答案
虽然传统 for
循环看起来像 for(i = 0; i < N; i++)
这也是一种有效的使用方式。
- 循环的第一部分是空的,因为它不需要
(
for(;;)
也是有效的)。 - 第二部分(
count>0;
)是您所期望的停止条件 - 第三部分是每次迭代结束时所做的事情,在本例中 - 这是两件事(可以是 0 个命令,或任何其他数量的命令):
count--, j++
A for
loop 可以与它的 0,1 或 2 个 parts 一起使用,这意味着所有这些选项都可以:
-
for(;;)
-
for(int i;;)
只有声明。有点奇怪,但有效 -
for(int i=0; i < 10;)
也有效,但这可能是一个无限循环 -
for(int i=0; ; i++)
也有效,但这可能是一个无限循环,因为不存在停止条件(循环内的break
可以处理这个) -
for(int i=0;i<10;i++)
传统的 -
for(;i<10;i++)
如果i
有效在别处声明(它也应该被定义......) -
for(;i<10;)
只有停止条件,奇怪,但有效 -
for(;;i++)
如果i
也有效在别处声明,但这可能是一个无限循环
另一件需要注意的事情:因为在 for 循环的每个部分中都可以使用任意数量的语句,所以你可以这样:
for (int i = 0, j = 0; i < 1, j < 5; i++, j++)
printf("%d\t%d\n", i, j);
请注意,使用 ,
很棘手。它将执行每个语句但只评估最后一个,这意味着在循环的 3 个部分中的每个部分:
-
int i = 0, j = 0;
两者都会执行。无评价相关 - 棘手的部分
i < 1, j < 5
两者都将只执行但是j < 5
将被评估,意思是,循环停止条件是j < 5
.i < 1
写在那里,但这不会使循环停止 -
i++, j++
与 1 相同。两者都会执行。无评价相关
这是输出:
0 0
1 1
2 2
3 3
4 4
关于c - C中的for循环用于从文本文件中读取序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820633/