printf
% पी प्रारूप निर्दिष्ट करने के लिए ध्वज के रूप में '0' जोड़ रहा है या नहीं?printf प्रारूप विनिर्देशक% p के लिए ध्वज '0', सही या नहीं?
#include <stdio.h>
int main()
{
int a = 42;
void* p = &a;
printf("Pointer address: %08p", p);
return 0;
}
Ideone पर भी।
कुछ ऊपर के समान कोड संकलन, मैं कोई चेतावनी मिल गया या जो भी माइक्रोसॉफ्ट विजुअल C++ 2015, लेकिन जीसीसी 5.4.0 से एक चेतावनी से:
"चेतावनी: '0' '% पी' के साथ प्रयोग किया झंडा gnu_printf प्रारूप [-Wformat] "
cppreference printf से पढ़ना, मुझे लगता है कि:
0: पूर्णांक और चल बिन्दु संख्या रूपांतरण, अग्रणी शून्य के लिए पैड के लिए क्षेत्र के बजाय अंतरिक्ष पात्रों में से किया जाता है। पूर्णांक संख्याओं के लिए यदि सटीकता स्पष्ट रूप से निर्दिष्ट की जाती है तो इसे अनदेखा किया जाता है। के लिए इस ध्वज का उपयोग करके अन्य रूपांतरणों को अपरिभाषित व्यवहार में परिणाम मिलता है। यह अनदेखा है अगर - ध्वज मौजूद है।
जहां तक मैं व्याख्या कर सकता हूं,% p सूचक पते के लिए है, जो सभी के बाद एक पूर्णांक संख्या है, तो क्या यह अपरिभाषित व्यवहार% p पर लागू होता है?
यदि नहीं, तो GCC -Wformat चेतावनी क्यों?
oook तो क्यों downvote? – roalz
मुझे लगता है क्योंकि कोड बकवास है जो मौलिक वाक्यविन्यास कारणों के लिए संकलित नहीं होगा? 'printf (" सूचक पता:% 08 पी ", वापसी 0; 'यहां कोड टाइप न करें, बजाय वास्तविक कोड या एक कार्य उदाहरण कॉपी/पेस्ट करें। – Lundin
जेज़, ठीक है, मैंने अभी पाया है कि आइडिया से कॉपी और पेस्ट काम नहीं करता है जैसा कि मैंने उम्मीद की, संपादित किया। – roalz