[英]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.