मैं सी में लूप के बारे में पढ़ रहा था, मुझे कोड की एक दिलचस्प लाइन मिली, जिसे मैं वास्तव में समझ नहीं पाया। अगर कोई मुझे यह लाइन समझा सकता है तो मैं सराहना करता हूं: 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;
है।
अग्रिम में धन्यवाद।
3 जवाब
for (; count>0; count--, j++)
का अर्थ है:
- कुछ न करें
(;
;
यह वह जगह है जहां आमतौर पर लूप कंट्रोल वेरिएबल्स को इनिशियलाइज़ किया जाता है,
लेकिन अगर वह पहले से ही किया जा चुका है, तो कुछ भी नहीं करना ठीक है - लूपिंग शुरू करें
- यदि गिनती 0 से अधिक है,
count>0;
, तो शरीर करें,
अन्यथा शरीर के बाद जारी रखें - फिर डिक्रीमेंट काउंट और इंक्रीमेंट j
count--, j++)
- यदि गिनती 0 से अधिक है,
- कुंडली
चूंकि उसने पहले ही वेरिएबल घोषित कर दिया है जिसे वह बढ़ाना चाहता है, वह इसे लूप में फिर से घोषित नहीं करता है। वह लूप के प्रत्येक मोड़ पर दो चर भी बदलता है, वह गिनती और वेतन वृद्धि जे घटाता है। जरूरत पड़ने पर sscanf definition। उन्होंने मूल रूप से एक फाइल पढ़ी।
आइए उस कोड लाइन की जांच करें जो आपको भ्रमित करती है।
for (; count>0; count--, j++){
statement
}
निष्पादित करता है statement
जबकि count>0
। यह बार-बार count--, j++
करता है जहां ,
अल्पविराम ऑपरेटर है। यह ऑपरेटर निम्न कार्य करता है:
expression1, expression2
expression1
का मूल्यांकन करता है, फिर expression2
का मूल्यांकन करता है और expression2
का मान पूरे व्यंजक के मान के रूप में देता है।
चूँकि यहाँ count--,j--
के मान का उपयोग नहीं किया गया है, यह केवल count--
के बाद j--
कर रहा है।
for
-लूप का हर तर्क वैकल्पिक है इसलिए for(;;)
भी वैध है और while(1)
के बराबर है।