คุณติดแท็กคำถาม C และ C ++ พร้อมกันในขณะที่คำตอบนั้นแตกต่างกันอย่างมากในภาษาเหล่านี้
ประการแรกถ้อยคำของชื่อคำถามของคุณไม่ถูกต้อง (หรือแม่นยำยิ่งขึ้นโดยไม่เกี่ยวข้องกับคำถามนั้น ๆ ) ในตัวอย่างทั้งสองของคุณตัวแปรจะถูกประกาศและกำหนดพร้อมกันในหนึ่งบรรทัด ความแตกต่างระหว่างตัวอย่างของคุณก็คือว่าในครั้งแรกหนึ่งตัวแปรที่เหลือทั้งเตรียมหรือเริ่มต้นมีมูลค่าหุ่นและจากนั้นก็จะได้รับมอบหมายให้เป็นค่าที่มีความหมายในภายหลัง ในตัวอย่างที่สองตัวแปรจะเริ่มต้นได้ทันที
ประการที่สองในภาษา C ++ ตามที่ @nightcracker บันทึกไว้ในคำตอบของเขาทั้งสองโครงสร้างนี้มีความแตกต่างทางความหมาย คนแรกอาศัยการเริ่มต้นในขณะที่คนที่สอง - ตามที่ได้รับมอบหมาย ใน C ++ การดำเนินการเหล่านี้สามารถโหลดได้มากเกินไปและอาจนำไปสู่ผลลัพธ์ที่แตกต่างกันได้ (แม้ว่าเราจะสามารถทราบได้ว่าการสร้างการเริ่มต้นและการกำหนดค่าเกินพิกัดที่ไม่เทียบเท่ากันนั้นไม่ใช่ความคิดที่ดี)
ในภาษา C มาตรฐานดั้งเดิม (C89 / 90) มันผิดกฎหมายในการประกาศตัวแปรที่อยู่ตรงกลางของบล็อกซึ่งเป็นสาเหตุที่คุณอาจเห็นตัวแปรที่ประกาศไว้โดยไม่กำหนดค่าเริ่มต้น (หรือเริ่มต้นด้วยค่าดัมมี่) ที่จุดเริ่มต้นของบล็อกแล้วกำหนดความหมาย ค่าในภายหลังเมื่อค่าที่มีความหมายเหล่านั้นพร้อมใช้งาน
ในภาษา C99 มันก็โอเคที่จะประกาศตัวแปรที่อยู่ตรงกลางของบล็อก (เช่นเดียวกับใน C ++) ซึ่งหมายความว่าวิธีแรกที่จำเป็นเท่านั้นในบางสถานการณ์ที่เฉพาะเจาะจงเมื่อไม่รู้จัก initializer ที่จุดของการประกาศ (สิ่งนี้ใช้ได้กับ C ++ เช่นกัน)