नेस्टेड फोर लूप्स में, एक से अधिक for स्टेटमेंट्स लूप के बॉडी में शामिल होते हैं।
इटरेशन्स की संख्या बाहरी लूप के इटरेशन्स × आंतरिक लूप के इटरेशन्स के बराबर होगी।
उदाहरण: नेस्टेड फोर लूप
#include <stdio.h>
int main() {
int i, j;
for(i = 1; i <= 2; i++) {
for(j = 1; j <= 2; j++) {
printf("%d ", i * j);
}
}
return 0;
}
आउटपुट
1 2 2 4
निष्पादन ट्रेस:
| बाहरी (i) | आंतरिक (j) | i*j |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 2 | 2 |
| 2 | 1 | 2 |
| 2 | 2 | 4 |
C में अन्य संबंधित कंट्रोल स्टेटमेंट्स
- break
- continue
- goto
break स्टेटमेंट
- लूप (या ब्लॉक) को समाप्त करने के लिए उपयोग किया जाने वाला कीवर्ड।
- नियंत्रण लूप (या ब्लॉक) के बाद अगले स्टेटमेंट पर जाता है।
for,while,do-whileऔरswitchके साथ उपयोग किया जाता है।- नेस्टेड लूप्स में केवल सबसे आंतरिक लूप समाप्त होता है।
उदाहरण
#include <stdio.h>
void main() {
int i;
for(i = 1; i <= 5; i++) {
printf("%d ", i);
if(i == 3)
break;
}
}
आउटपुट
1 2 3
continue स्टेटमेंट
- लूप के अगले इटरेशन को जारी रखने के लिए उपयोग किया जाने वाला कीवर्ड।
continueके बाद के स्टेटमेंट्स को स्किप करता है।for,whileऔरdo-whileके साथ उपयोग किया जाता है।
उदाहरण
#include <stdio.h>
void main() {
int i;
for(i = 1; i <= 5; i++) {
if(i == 2)
continue;
printf("%d ", i);
}
}
आउटपुट
1 3 4 5
goto स्टेटमेंट
- प्रोग्राम निष्पादन के सामान्य क्रम को बदलकर नियंत्रण को प्रोग्राम के किसी अन्य भाग में स्थानांतरित करता है।
- लेबल के साथ उपयोग किया जाता है:
goto label;...label:
उदाहरण
#include <stdio.h>
void main() {
printf("Hello ");
goto l1;
printf("How are ");
l1: printf("you");
}
आउटपुट
Hello you
सर्वोत्तम अभ्यास
| स्टेटमेंट | सिफारिश |
|---|---|
| break | लूप से जल्दी बाहर निकलने के लिए ठीक है |
| continue | लूप में शर्ती स्किप के लिए ठीक है |
| goto | बचें - स्पेगेटी कोड बनाता है; फंक्शन्स/लूप्स/फ्लैग्स का उपयोग करें |
नेस्टेड लूप्स में break/continue
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
if(condition) break; // केवल आंतरिक लूप से बाहर निकलता है
if(condition) continue; // केवल आंतरिक लूप का अगला इटरेशन
}
// बाहरी लूप जारी रहता है
}
// बाहरी लूप से बाहर निकलने के लिए:
bool done = false;
for(i = 0; i < 3 && !done; i++) {
for(j = 0; j < 3; j++) {
if(condition) { done = true; break; }
}
}