printf()
साथ "zd"
के प्रयोग पर स्पष्टीकरण के लिए देख रहे हैं।`printf()` के साथ "zd" विनिर्देशक का उपयोग कैसे करें?
निश्चित रूप से निम्नलिखित C99 और बाद में साथ सही है।
void print_size(size_t sz) {
printf("%zu\n", sz);
}
सी कल्पना printf("%zd\n", sz)
यह कैसे पढ़ा जाता है पर पर निर्भर करता है की अनुमति देते हैं लगता है:
7.21.6.1 fprintf
समारोह
z
निर्दिष्ट करता है कि एक निम्नलिखितd
,i
,o
,u
,x
, याX
रूपांतरण विनिर्देशक ०१२३२३४७१२६ पर लागू होता हैया संबंधित हस्ताक्षरित पूर्णांक प्रकार तर्क; या कि एक के बादn
रूपांतरण विनिर्देशक एक हस्ताक्षरित पूर्णांकsize_t
तर्क करने के लिए इसी प्रकार के सूचक के लिए लागू होता है। C11dr §7.21.6.1 7
इस
- के रूप में पढ़ा जाना चाहिए "
z
निर्दिष्ट करता है कि एक निम्नलिखितd
... रूपांतरण विनिर्देशकsize_t
या इसी पर हस्ताक्षर किए पूर्णांक प्रकार तर्क पर लागू होता है ..." (दोनों प्रकार के) और "z
निर्दिष्ट करता है कि एक निम्नलिखितu
... रूपांतरण विनिर्देशकsize_t
या इसी पर हस्ताक्षर किए पूर्णांक प्रकार तर्क पर लागू होता है ..." (दोनों प्रकार के)
या
- "
z
निर्दिष्ट करता है कि एक निम्नलिखितd
... रूपांतरण विनिर्देशक इसी पर हस्ताक्षर किए पूर्णांक प्रकार तर्क पर लागू होता है ..." (पर हस्ताक्षर किए प्रकार केवल) और "z
निर्दिष्ट करता है कि एक निम्नलिखितu
... रूपांतरण विनिर्देशकsize_t
"(अहस्ताक्षरित प्रकार केवल) पर लागू होता है।
मैं # 2 परिभाषा का उपयोग कर रहा हूं, लेकिन अब यह सुनिश्चित नहीं है।
जो सही है, 1, 2, या कुछ और?
तो # 2 सही है, क्या एक प्रकार
"%zd"
उपयोग कर सकते हैं कि का एक उदाहरण है?
"मानक सी नहीं करते हैं" टी इस प्रकार के लिए एक नाम या यह निर्धारित करने का एक अच्छा तरीका है कि यह क्या है। " यह सब कहता है। – chux
@ एमके .: यह अजीब है। यह कहता है कि आपने 2 घंटे पहले अपना जवाब संपादित किया था (मैं उस पर ऑब्जेक्ट नहीं करता) और शरीर में 2 अक्षर हटा दिए, लेकिन मुझे कोई बदलाव नहीं दिख रहा है। –
@ किथ थॉम्पसन हाँ मुझे करना था। यह मुझे ऊपर वोट के साथ डाउनवोट को प्रतिस्थापित करने की अनुमति नहीं देगा क्योंकि यह 2 घंटे का है। जो पूरी तरह से मूर्ख है क्योंकि मैं संपादित और बदल सकता हूं। मैंने मेटा से उन लोगों की सीमा को हटाने के लिए कहा जिनके पास संपादन करने के लिए पर्याप्त प्रतिनिधि हैं, लेकिन यह कहीं भी नहीं गया। परिवर्तन लिंक फुटनोट्स से पहले अतिरिक्त खाली रेखा को हटा रहा था जो प्रदर्शित नहीं होते हैं, इसलिए आप इसे नहीं देख सकते (मैंने ईमानदारी से एक सार्थक संपादन के साथ आने का प्रयास किया लेकिन जवाब बहुत अच्छा था :) –