C中的For循环,用于从文本文件读取序列号
我在读C语言中的循环时,发现了一行有趣的代码,我真的无法理解。如果有人能向我解释这句话,我将不胜感激:C中的For循环,用于从文本文件读取序列号,c,for-loop,C,For Loop,我在读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\u t类型,in
for(;count>0;count--,j++)
但整个代码都是这样的:
while(getline(&line, &count, input) != -1)
{
for ( ; count>0; count--, j++)
sscanf(line, "%d", &array[i]);
i++;
}
变量count
是size\u t
类型,int i,j=0
和FILE*输入代码>用于读取存储在文本文件中的数字序列
提前感谢。因为他已经声明了他希望增加的变量,所以他没有在for循环中重新声明它。他还在循环的每一圈改变两个变量,他减少计数,增加j。如果你需要的话。他基本上是在读一个文件。因为他已经声明了他想要增加的变量,所以他没有在for循环中重新声明它。他还在循环的每一圈改变两个变量,他减少计数,增加j。如果你需要的话。他基本上是读一个文件。对于(;count>0;count--),j++)的意思是:
- 什么也不做
(;
;
这通常是初始化回路控制变量的地方,
但如果已经这样做了,什么也不做也没关系
- 开始循环
- 如果count大于0,
count>0;
,则执行正文,
否则在尸体后面继续
- 然后递减计数和递增j
count--,j++)
- 环路
对于(;count>0;count--,j++)
表示:
- 什么也不做
(;
;
这通常是初始化回路控制变量的地方,
但如果已经这样做了,什么也不做也没关系
- 开始循环
- 如果count大于0,
count>0;
,则执行正文,
否则在尸体后面继续
- 然后递减计数和递增j
count--,j++)
- 环路
虽然传统的for
循环看起来像for(i=0;i
这也是一种有效的使用方法
- 循环的第一部分是空的,因为它不需要
(
对于(;)
也是有效的)
- 第二部分(
count>0;
)是您预期的停止条件
- 第三部分是在每次迭代结束时所做的工作,在这种情况下,这是两件事(可以是0个命令,或者任何其他数量的命令):
count-,j++
用于
循环的可以与0、1或2个it部件一起使用,这意味着所有这些选项都可以:
(;;)
仅用于(int i;;)
声明。有点奇怪,但很有道理
for(int i=0;i<10;)
也有效,但这可能是一个无限循环
for(int i=0;;i++)
也有效,但这可能是一个无限循环,因为不存在停止条件(循环内的break
可以处理此问题)
for(int i=0;i而传统的for
循环看起来像for(i=0;i
这也是一种有效的使用方法
- 循环的第一部分是空的,因为它不需要
(
对于(;)
也是有效的)
- 第二部分(
count>0;
)是您预期的停止条件
- 第三部分是每次迭代结束时要做的事情,在本例中,这是两件事(可以是0个命令,或任何其他数量的命令):
count--,j++
用于
循环的可以与0、1或2个it部件一起使用,这意味着所有这些选项都可以:
(;;)
仅用于(int i;;)
声明。有点奇怪,但有效
for(int i=0;i<10;)
也有效,但这可能是一个无限循环
for(int i=0;;i++)
也有效,但这可能是一个无限循环,因为不存在停止条件(循环内的break
可以处理此问题)
for(inti=0;i让我们检查一下让您感到困惑的代码行
for (; count>0; count--, j++){
statement
}
当计数>0时执行语句
。它重复执行计数--,j++
其中,
是逗号运算符。此运算符执行以下操作:
expression1, expression2
求值expression1
,然后求值expression2
,并返回expression2
的值作为整个表达式的值
因为这里不使用count--,j--
的值,所以这只是执行count--
然后执行j--
for
-循环的每个参数都是可选的,因此即使(;)
for(;)也是有效的,并且与等效,而(1)
让我们检查一下让您困惑的代码行
for (; count>0; count--, j++){
statement
}
当计数>0时执行语句
。它重复执行计数--,j++
其中,
是逗号运算符。此运算符执行以下操作:
expression1, expression2
求值expression1
,然后求值expression2
,并返回expression2
的值作为整个表达式的值
因为这里不使用count--,j--
的值,所以这只是执行count--
然后执行j--
for
-循环的每个参数都是可选的,因此即使(;)
的也是有效的,相当于,而(1)
在该代码中几乎没有任何意义。即使重复从输入读取行,循环中的sscanf
也只是重复读取相同的int
值(第行中的第一个)在位置i
处放入一些数组,在整个循环中不会改变。j
除了for循环中看似无用的post增量外,其他地方都没有使用,i
仅在for循环终止后递增。最后,count
是getline
结果的字节计数。您是这是真的吗