सकता है किसी को भी समझाने के लिए क्यों मुझे यह प्रिंट 32 और समग्र अवधारणा की यह कैसे काम करता है?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
सकता है किसी को भी समझाने के लिए क्यों मुझे यह प्रिंट 32 और समग्र अवधारणा की यह कैसे काम करता है?
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
उचित खरोज बनाने के लिए होगा यह स्पष्ट:
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
तो निम्न होता है:
a
प्रारंभ करने के लिए 1
. मैं नहीं जानता कि क्यों इस चर मौजूद है, के बाद से यह कभी नहीं इस्तेमाल किया.for
कार्यान्वित इसके प्रारंभ के बयान, printf("3");
. इस प्रिंट 3
.for
का मूल्यांकन करता है इसकी पुनरावृत्ति हालत, printf("2")
. इस प्रिंट 2
और वर्णों की संख्या देता है कि मुद्रित किया गया है, जो 1
.return 0;
. इस रिटर्न से main()
इस प्रकार , समाप्त पाश.के बाद से पाश समाप्त होता है, हम कभी नहीं का मूल्यांकन करता है, अद्यतन अभिव्यक्ति, printf("1")
, तो यह कभी नहीं प्रिंट 1
. और हम कोई पुनरावृत्ति का कुछ भी.
कि आप जानते हैं, एक कार्यक्रम चलाने के लिए शुरू होता बाएं से '{' के समारोह मुख्य(), अंत में सही '}' के समारोह मुख्य(), अगर वहाँ है कोई अंतहीन पाश है.
के रूप में अपने कोड से पता चलता है, अपने कठिनाई को समझने के लिए है फ़्लोचार्ट के पाश के लिए सी भाषा में.
for (initializationStatement; testExpression; updateStatement)
{
// statements inside the body of loop
for loop body;
}
1.प्रारंभ के बयान मार डाला है केवल एक बार.
2.फिर, परीक्षण अभिव्यक्ति का मूल्यांकन किया है । यदि परीक्षण अभिव्यक्ति का मूल्यांकन करने के लिए गलत है, के लिए लूप समाप्त होता है.
3.हालांकि, अगर परीक्षण अभिव्यक्ति का मूल्यांकन करने के लिए सच है, बयानों के शरीर के अंदर पाश के लिए क्रियान्वित कर रहे हैं, और अद्यतन अभिव्यक्ति अद्यतन किया जाता है.
4.फिर से परीक्षण अभिव्यक्ति का मूल्यांकन किया है ।
इस प्रक्रिया पर चला जाता है जब तक परीक्षण अभिव्यक्ति गलत है । जब परीक्षण अभिव्यक्ति झूठी है, पाश समाप्त हो जाता है.
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
32
1.आरंभीकरण "printf ("3")
", तो, प्रिंट:
3
2.परीक्षण अभिव्यक्ति "printf("2")
", कि हमेशा सच है, तो प्रिंट:
2
3.के लिए शरीर के पाश "break
", इसका मतलब है कि समाप्त होने के निष्पादन के लिए पाश,
पर अमल नहीं करते हैं अद्यतन अभिव्यक्ति "printf("1")
"
इसके अलावा, कार्यक्रम से बाहर कूद पाश के लिए, और कूद करने के लिए "return 0;
",
तो, अंत में निष्पादन के इस कार्यक्रम.
तो, आउटपुट है
32
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) ;
return 0;
}
321212121212121212...121212...1212...
इसी तरह,
1.आरंभीकरण "printf ("3")
", तो, प्रिंट:
3
2.परीक्षण अभिव्यक्ति "printf("2")
", कि हमेशा सच है, तो प्रिंट:
2
3.शरीर के लिए पाश "`"खाली है, तो कुछ भी नहीं है । गोटो अद्यतन अभिव्यक्ति
"printf("1")
"
4.अद्यतन अभिव्यक्ति "printf("1")
", तो, प्रिंट
1
5.फिर, गोटो परीक्षण अभिव्यक्ति "printf("2")
", कि है "2.परीक्षण
अभिव्यक्ति "printf("2")", कि हमेशा सच है, तो प्रिंट".क्योंकि
शरीर के पाश है "`"खाली है, तो हमेशा गोटो से अद्यतन
अभिव्यक्ति "printf("1")
" परीक्षण करने के लिए अभिव्यक्ति "printf("2")
",
यही कारण है कि मुद्रण के बाद "32
"कि समारोह प्रिंट अनंत लूप
"12
".और, कि समारोह के अंत कभी नहीं बंद करो मुद्रण "12
"जब तक आप
कि बंद करो समारोह है ।
तो, तो, तो उत्पादन है
32121212...121212...121212...
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
32
1.कार्यक्रम चलाने के लिए शुरू होता बाएं से '{' के समारोह मुख्य(),
यही कारण है कि प्रारंभ के बयान के अस्थायी चर
"int a=1;
".
उस बयान को परिभाषित करता है एक "int
"टाइप अस्थायी चर "a
", और
सेट करने के लिए अपने मूल्य "1
"है, लेकिन है कि प्रिंट कुछ भी नहीं है!
2.तो, कार्यक्रम गोटो पाश के लिए.
3.प्रारंभिक वक्तव्य है "printf ("3")
", तो, प्रिंट
"3
",और
गोटो परीक्षण अभिव्यक्ति है ।
3
4.परीक्षण अभिव्यक्ति "printf("2")
", कि हमेशा सच है, तो
प्रिंट "2
", और गोटो पाश के लिए शरीर की अभिव्यक्ति है ।
2
5.पाश के लिए शरीर अभिव्यक्ति "return 0
", अभिव्यक्ति
"return 0
"वापसी '0
'करने के लिए समारोह मुख्य(),और अंत में
निष्पादन की मुख्य(), लेकिन कुछ भी नहीं मुद्रित.
तो, आउटपुट है:
32