[英]For loop in C for reading number of sequence from text file
我在阅读有关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;
)是您期望的停止条件 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++)
如果在其他地方声明了i
则有效(也应定义...) for(;i<10;)
仅停止条件,奇数,但有效 i
在其他地方声明,则for(;;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
for (; count>0; count--, j++)
意思是:
(;
;; count>0;
,然后做身体, count--, j++)
由于他已经声明了要增加的变量,因此他不会在for循环中重新声明它。 他还在循环的每一圈更改两个变量,即递减计数和递增j。 sscanf定义(如果需要)。 他基本上读了一个文件。
让我们检查一下使您感到困惑的代码行。
for (; count>0; count--, j++){
statement
}
当count>0
执行statement
。 它屡做count--, j++
哪里,
是逗号运算符 。 该运算符执行以下操作:
expression1, expression2
计算expression1
,然后计算expression2
并返回expression2
的值作为整个表达式的值。
由于此处未使用count--,j--
的值,因此只在做count--
然后是j--
。
for
loop的每个参数都是可选的,因此,即使for(;;)
也有效,并且等效于while(1)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.