किसी भी साइड-कवर के साथ अन्य अच्छी तरह से समझाए गए उत्तर के साथ, मैं प्रदान किए गए प्रश्न का सटीक और संक्षिप्त जवाब देना चाहूंगा।
printf
एक एकल तर्क (रूपांतरण विनिर्देशक के बिना) के साथ पदावनत क्यों किया जाता है ?
printf
सामान्य रूप से एकल तर्क के साथ एक फ़ंक्शन कॉल को पदावनत नहीं किया जाता है और इसकी कोई कमजोरियां भी नहीं होती हैं, जब आप हमेशा सही कोड का उपयोग करते हैं।
C पूरी दुनिया के बीच, स्टेटस शुरुआतकर्ता से लेकर स्टेटस एक्सपर्ट printf
कंसोल तक आउटपुट के रूप में एक साधारण टेक्स्ट वाक्यांश देने के लिए उस तरह का उपयोग करते हैं।
इसके अलावा, किसी को यह भेद करना है कि क्या यह एक और एकमात्र तर्क एक स्ट्रिंग शाब्दिक या एक स्ट्रिंग का सूचक है, जो मान्य है लेकिन आमतौर पर इसका उपयोग नहीं किया जाता है। उत्तरार्द्ध के लिए, निश्चित रूप से, असुविधाजनक आउटपुट या किसी भी प्रकार के अनिर्धारित व्यवहार हो सकते हैं , जब पॉइंटर को एक वैध स्ट्रिंग को इंगित करने के लिए ठीक से सेट नहीं किया जाता है, लेकिन ये चीजें तब भी हो सकती हैं यदि प्रारूप विनिर्देशक संबंधित तर्क को मेल नहीं दे रहे हैं। कई तर्क।
बेशक, यह भी सही और उचित नहीं है कि स्ट्रिंग, एक और केवल तर्क के रूप में प्रदान की जाती है, इसका कोई प्रारूप या रूपांतरण विनिर्देशक है, क्योंकि कोई रूपांतरण होने वाला नहीं है।
उस स्ट्रिंग के "Hello World!"
अंदर किसी भी प्रारूप विनिर्देशक के बिना केवल तर्क के रूप में एक सरल स्ट्रिंग शाब्दिक देते हुए कहा, जैसे कि आपने इसे प्रश्न में प्रदान किया है:
printf("Hello World!");
है न पदावनत या " बुरा व्यवहार " बिल्कुल न ही किसी भी कमजोरियों है।
वास्तव में, कई सी प्रोग्रामर शुरू करते हैं और सामान्य रूप से उस हैलोवर्ल्ड-प्रोग्राम के साथ सी या यहां तक कि प्रोग्रामिंग भाषाओं को सीखना और उपयोग करना शुरू करते हैं और यह printf
कथन अपनी तरह के पहले वाले हैं।
वे नहीं होगा कि अगर वे पदावनत हो गए।
एक पुस्तक में, जो मैं पढ़ रहा हूं, यह लिखा है कि printf
एक एकल तर्क के साथ (रूपांतरण विनिर्देशक के बिना) पदावनत किया जाता है।
खैर, फिर मैं किताब या लेखक पर ही ध्यान केंद्रित करूँगा। यदि कोई लेखक वास्तव में ऐसा कर रहा है, मेरी राय में, गलत दावे और यहां तक कि शिक्षण के बिना यह स्पष्ट रूप से बताए बिना कि वह ऐसा क्यों कर रहा है (यदि वे दावे वास्तव में उस पुस्तक में प्रदान किए गए समकक्ष हैं), तो मैं इसे एक बुरी पुस्तक मानूंगा। एक अच्छी पुस्तक, जैसा कि विरोध किया गया है, यह बताएगी कि कुछ विशेष प्रकार की प्रोग्रामिंग विधियों या कार्यों से क्यों बचें।
जो मैंने ऊपर कहा, उसके अनुसार printf
केवल एक तर्क (एक स्ट्रिंग शाब्दिक) और बिना किसी प्रारूप के विनिर्देशक का उपयोग करना किसी भी मामले में पदावनत या "बुरा व्यवहार" नहीं माना जाता है ।
आपको लेखक से पूछना चाहिए कि उसके साथ क्या मतलब था या उससे भी बेहतर, उसे अगले संस्करण या सामान्य रूप से छापने के लिए रिश्तेदार अनुभाग को स्पष्ट करने या सही करने के लिए मन करें।
printf("Hello World!")
जैसा है वैसा नहीं हैputs("Hello World!")
।puts()
append a'\n'
। इसके बजाय तुलनाprintf("abc")
करेंfputs("abc", stdout)