2012-05-05 5 views
12

मुझे आश्चर्य है अगर करता है:`NULL` सूचक के साथ रूपांतरण विनिर्देश 'पी` का व्यवहार क्या है?

void *ptr = NULL; 
printf("%p\n", ptr); 

विल हमेशा (nil) उत्पादन देता है?

क्या यह मानक पुस्तकालय कार्यान्वयन पर निर्भर करता है, या यह एक सी 99 मानक विनिर्देश है?

+5

मुझे लगता है कि मानक परिभाषित नहीं करता है कि '% p' प्रारूप के लिए printf का आउटपुट क्या है। यह कार्यान्वयन पर निर्भर है। –

+0

मैं इस सवाल को फिर से काम करता हूं क्योंकि उत्तर गलत हैं। यह ~ 5000 विचारों के प्रश्न के लिए एक समस्या है। – Stargateur

+0

@Stargateur: necromancer बैज के लिए अपने रास्ते पर? – chqrlie

उत्तर

18

मेरे सिस्टम पर यह (null) उत्पन्न करता है, इसलिए मुझे लगता है कि यह कार्यान्वयन परिभाषित है। आम तौर पर, सब कुछ %p प्रिंट कार्यान्वयन-परिभाषित किया गया है:

7.21.6.1

तर्क शून्य करने के लिए एक सूचक होगा। पॉइंटर का मान कार्यान्वयन-परिभाषित तरीके से प्रिंटिंग वर्णों के अनुक्रम में परिवर्तित किया गया है।

5

हमेशा (शून्य) देता है?

बिलकुल नहीं। मेरी मशीन पर (i686-apple-darwin11-llvm-gcc-4.2 के साथ मैक) यह 0x0 प्रिंट करता है।

संबंधित मुद्दे