के अंदर टर्नरी ऑपरेटर this पढ़ने के बाद मैंने सोचना शुरू किया कि मैंने printf()
के बारे में एक लूट सीखा है। अचानक मैं this किताब से निम्नलिखित कोड का टुकड़ा मिला:प्रिंटफ
int main()
{
char str[]="Hello";
int i=5,j=10;
printf(i>j?"%50s":"%s",str); //unable to understand this
return 0;
}
हैरानी की बात है इसके बाद के संस्करण कोड त्रुटियों के बिना चल रहा है और यह हैलो प्रिंट करता है।
int printf(const char *format,argument_list);
तो इस वाक्य रचना के अनुसार, printf()
प्रारूप स्ट्रिंग साथ शुरू करना चाहिए: मेरी जानकारी के अनुसार निम्नलिखित printf()
की वाक्य रचना है। लेकिन जैसा कि आप उपरोक्त कोड printf()
में देख सकते हैं i>j
से शुरू हो रहा है। क्या इसका मतलब है कि मैं printf() के वाक्यविन्यास की व्याख्या करने में गलत हूं? printf() के अंदर टर्नरी ऑपरेटर रखना एक विशेष मामला है?
संपादित
मैं त्रिगुट ऑपरेटर मैं printf()
की पहली बहस के बारे में पूछ रहा हूँ जो स्थिरांक चार होना चाहिए * जो मैं अपने उदाहरण में नहीं लग रहे हैं के बारे में पता है।
1 पैरामीटर के अंदर अभिव्यक्ति का परिणाम निरंतर चार सरणी के लिए एक सूचक होना चाहिए, इसलिए आश्चर्य की बात नहीं है। –
आपका मतलब है कि डबल कोट्स के बिना भी कुछ भी स्थिर स्ट्रिंग –
के लिए पॉइंटर है, यदि आप इसे इस तरह लिखते हैं तो चीजें स्पष्ट हो सकती हैं: 'printf ((i> j?"% 50s ":"% s "), str)' –