पृष्ठभूमिसी कारण में अंतर्निहित कास्ट कर सकते हैं?
पिछली बार मैं चाहे कोष्ठकों निहित डाली (here) पैदा कर रहे थे के बारे में पूछा, @pmg काफी अच्छा करते रहे कि 'सी में कुछ भी पूर्णांक नीचे किया जाता है "लेकिन वहाँ था, चर्चा के बारे में था bitwise ऑपरेटरों, और कोष्ठक सिर्फ एक व्याकुलता के रूप में बाहर निकला।
परिचय
नीचे, कोष्ठकों मुख्य आकर्षण हैं। या, अधिक उबाऊ लेकिन सटीक होने के लिए, मैं देखता हूं केवल एकमात्र ऑपरेटरों कोष्ठक और असाइनमेंट ऑपरेटर हैं।
At this reference about the C parentheses operator, मुझे इस प्रकार को बदलने वाले कोष्ठक के बारे में कुछ भी नहीं दिख रहा है (टाइपकास्ट सिंटैक्स के बाहर, जो इस मामले में नहीं है)।
इस बीच, here's a reference that reminds that there is automatic type conversion on assignment, लेकिन मुझे नहीं लगता कि यह स्थिर विश्लेषण टूल व्यवहार की व्याख्या करेगा जो मैं यहां बताऊंगा।
मेरे पिछले प्रश्न के रूप में, "ठीक है" का मतलब है कि स्थिर विश्लेषण उपकरण नहीं एक निहित जैसे रूपांतरण के बारे में चेतावनी किया था, और "नहीं ठीक है" का मतलब है कि यह किया।
int main(void)
{
unsigned int ui;
int i;
ui = (256U); // NOT OK (*) (1)
i = (256U); // NOT OK (*) (2)
i = 256; // OK
i = 256U; // NOT OK
ui = 256U; // OK (3)
ui = 256; // NOT OK
return(0);
}
मैं उन्हें पहले दो को छोड़कर सभी को समझ सकता हूं - कोष्ठक क्या करते हैं? अगर वे अंतर्निहित टाइपकास्टिंग के रास्ते में कुछ भी नहीं करते हैं, तो मैं उम्मीद करता हूं कि (1) ठीक हो और (2) ठीक न हो। यदि वे int int int से छोटे प्रकार के स्वचालित प्रकार के प्रचार करते हैं, तो मैं उम्मीद करता हूं कि (1) ठीक नहीं होगा और (2) ठीक होने के लिए। लेकिन यह टूल कहता है कि दोनों ठीक नहीं हैं।
क्या यह एक स्थिर विश्लेषण उपकरण त्रुटि है, या उपकरण सही है और सी में अंतर्निहित प्रकार रूपांतरणों के बारे में जानने के लिए मुझे कुछ और चाहिए?
Btw (मुझे आशा है कि मूल्य 256 पर्याप्त मेरी मशीन पर अतिप्रवाह नहीं उत्पन्न कर छोटा है ...)
आपका स्थिर विश्लेषण उपकरण संभवतः गलत है। आप किस उपकरण का उपयोग कर रहे हैं, और यह आपको क्या त्रुटियां बताता है? – nos
सी मानक गारंटी देता है कि 256 का मान अंकगणित में नहीं, पूर्वप्रोसेसर में नहीं होगा - जब तक इसे किसी प्रकार के 'char' को असाइन नहीं किया जाता है। –