मैं सोच रहा था कि इस कार्यक्रम का नतीजा 5621 क्यों है?printf अप्रत्याशित परिणाम देता है
#include <stdio.h>
main()
{
int i=56;
printf("%d\n",printf("%d",printf("%d",i)));
getch();
}
मैं सोच रहा था कि इस कार्यक्रम का नतीजा 5621 क्यों है?printf अप्रत्याशित परिणाम देता है
#include <stdio.h>
main()
{
int i=56;
printf("%d\n",printf("%d",printf("%d",i)));
getch();
}
printf
प्रिंट किए गए वर्णों की मात्रा लौटाता है।
तो सबसे पहले सबसे आंतरिक printf
56 के साथ बुलाया जाता है, 56
प्रिंटिंग। फिर यह मुद्रित वर्णों की मात्रा (2) को printf
पर प्रिंट करता है, 2
प्रिंट करता है। फिर आखिर में मुद्रित वर्णों की मात्रा (1) बाहरी printf
में पारित हो जाती है, जिसे 5621
को प्रोसेस करने के लिए मुद्रित किया जाता है।
printf()
फ़ंक्शन कंसोल पर प्रिंट किए गए वर्णों की संख्या देता है।
उदाहरण के लिए निम्नलिखित printf कॉल के बाद, num_chars
के पास 10
होगा 0 स्ट्रिंग "Hi haccks\n"
में 10 गैर-नल वर्ण शामिल हैं जो स्क्रीन पर प्रिंट होंगे।
num_chars = printf("Hi haccks\n");
// ^^^^^^^^^^
// 12345678910
नोट: \n
एकल 10 वें चार है। तो उपर्युक्त कोड में printf से मूल्य वापस num_chars
चर पर भेजा गया।
अपने कोड में, दिए गए बयान में, भीतरी printf()
मूल्यों प्रिंट और फिर लौट वर्ण मान जो बाहरी printf द्वारा मुद्रित की संख्या के रूप में नीचे दिखाया गया है:
// 1 2 3
printf("%d\n", printf("%d", printf("%d",i))); // Here i = 56
^ ^ ^
print: 1 print: 2 print: 56
returns: 1 returns: 1 returns: 2
// 3 2 1 <--Order of printf called
तो यह आउटपुट 5621
@ डेलनान इसे फिर से संपादित किया गया है और स्पष्टता के लिए दोहराया गया है। – gtrig
से printf
man page
वापसी मान
सफल वापसी पर, ये फ़ंक्शंस मुद्रित वर्णों की संख्या लौटाते हैं ( तारों के आउटपुट को समाप्त करने के लिए उपयोग किए गए शून्य बाइट को छोड़कर)।
56
भीतरी printf
2 पात्रों के लिए छपा है मुद्रित कर रहे थे इसलिए अगले %d
फॉर्मेट स्पेसिफायर को तर्क 2
1 चरित्र बीच printf
द्वारा मुद्रित किया गया था ताकि बाहरी %d
फॉर्मेट स्पेसिफायर लिए तर्क है 1
केवल बाहरी printf
में एक नई लाइन शामिल है, इसलिए पिछली कॉल एक ही पंक्ति पर दूसरे के बाद आउटपुट करती है, 5621\n
दे रही है।
printf()
रिटर्न वर्णों की संख्या मुद्रित:
printf("%d",i)
मूल्य 56
आउटपुट।
printf("%d",printf("%d",i))
आउटपुट 56
और फिर 2
, 56
में वर्णों की संख्या।
printf("%d\n",printf("%d",printf("%d",i)))
आउटपुट 56
, फिर 2
, तो 2
में वर्णों की संख्या, जो 1
है।
यह बराबर है
#include <stdio.h>
main()
{
int n, i = 56;
n = printf("%d",i);
n = printf("%d", n);
n = printf("%d\n", n);
}
को printf लिखा वर्णों की संख्या देता है।
क्या यह संकलित भी करता है? 'main' में कोई रिटर्न टाइप नहीं है – StoryTeller
[' printf'] (http://en.cppreference.com/w/c/io/fprintf) के बारे में पढ़ें, और यह क्या लौटाता है, और ढेर के बारे में जानें, और आप समझेंगे। –
printf: सफलता पर, लिखे गए अक्षरों की कुल संख्या देता है। – P0W