我正在阅读C中的循环,我发现了一行有趣的代码,我无法理解.如果有人能解释我这行,我将不胜感激:
for (; count>0; count--, j++)
但整个代码是这样的:
while(getline(&line, &count, input) != -1)
{
for ( ; count>0; count--, j++)
sscanf(line, "%d", &array[i]);
i++;
}
Run Code Online (Sandbox Code Playgroud)
变量count是size_t类型,int i,j = 0 以及FILE *input;用于读取存储在文本文件中的数字序列.
提前致谢.
虽然传统for循环看起来像for(i = 0; i < N; i++)这也是使用它的有效方法.
for(;;)也是有效的).count>0;)是您所期望的停止条件count--, j++一个for循环可以使用0,1或2个部件,这意味着所有这些选项都可以:
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++)有效if如果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);
Run Code Online (Sandbox Code Playgroud)
请注意,使用,很棘手.它将执行每个语句但只评估最后一个语句,这意味着在循环的3个部分中的每个部分:
int i = 0, j = 0;两者都会执行.没有评估相关i < 1, j < 5两者都将执行BUT只会j < 5被评估,这意味着,循环停止条件是j < 5.i < 1写在那里,但这不会使循环停止i++, j++两者都将执行.没有评估相关这是输出:
0 0
1 1
2 2
3 3
4 4
Run Code Online (Sandbox Code Playgroud)