आपने अपने प्रश्न C और C ++ को एक ही समय में टैग किया है, जबकि इन भाषाओं में उत्तर काफी अलग है।
सबसे पहले, आपके प्रश्न के शीर्षक का शब्दांकन गलत है (या, अधिक सटीक, सवाल के लिए अप्रासंगिक)। आपके दोनों उदाहरणों में चर को एक रेखा में एक साथ घोषित और परिभाषित किया गया है । अपने उदाहरण के बीच अंतर यह है कि पहले एक में चर या तो छोड़ दिया जाता है है अप्रारंभीकृत या प्रारंभ एक डमी मूल्य के साथ और फिर इसे है सौंपा एक सार्थक मूल्य बाद में। दूसरे उदाहरण में चरों को तुरंत आरम्भ किया जाता है।
दूसरे, C ++ भाषा में, जैसा कि @ नाइटक्रैकर ने अपने उत्तर में उल्लेख किया है कि ये दोनों निर्माण शब्दार्थ रूप से भिन्न हैं। पहला वाला इनिशियलाइजेशन पर निर्भर है जबकि दूसरा वन - असाइनमेंट पर। C ++ में ये ऑपरेशन ओवरलोडेबल हैं और इसलिए संभावित रूप से अलग-अलग परिणाम दे सकते हैं (हालांकि कोई यह नोट कर सकता है कि आरंभीकरण और असाइनमेंट के गैर-बराबर ओवरलोड का उत्पादन करना एक अच्छा विचार नहीं है)।
मूल मानक सी भाषा (C89 / 90) में ब्लॉक के बीच में चर घोषित करना गैरकानूनी है, यही कारण है कि आप ब्लॉक की शुरुआत में असमान घोषित (या डमी मूल्यों के साथ आरंभिक) चर देख सकते हैं और फिर सार्थक निर्दिष्ट कर सकते हैं मूल्य बाद में, जब वे सार्थक मूल्य उपलब्ध हो जाते हैं।
C99 भाषा में ब्लॉक के बीच में वैरिएबल घोषित करना ठीक है (जैसे C ++ में), जिसका अर्थ है कि पहला दृष्टिकोण केवल कुछ विशिष्ट स्थितियों में ही आवश्यक है, जब शुरुआती बिंदु को घोषणा के बिंदु पर नहीं जाना जाता है। (यह C ++ पर भी लागू होता है)।