[問題] 當 switch 遇到 int b = 5;

看板C_and_CPP (C/C++)作者 (此方不可長)時間15年前 (2010/10/21 21:14), 編輯推噓5(501)
留言6則, 6人參與, 最新討論串1/1
遇到一個不解的問題: 本來 int b = 5 ; 這樣可以work, 但放入 switch 後就不能 compile 了, 好比說 switch (y) { case 1: int b = 5; break; } 錯誤訊息是: error C2360: 'b' 的初始化會被 'case' 標籤略過 但把這行改成 int b; b = 5; 這樣就可以了, 這是什麼樣的差異呢? 這兩種寫法有什麼不同嗎? 我的語言是 VC++ 2008, 請指教, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.126.29 ※ 編輯: wahaha99 來自: 220.132.126.29 (10/21 21:18)

10/21 21:35, , 1F
大概是你後面還有用到b
10/21 21:35, 1F

10/21 21:36, , 2F
case裡面的指令可以用{}包起來 宣告就不會有問題了
10/21 21:36, 2F

10/21 21:37, , 3F
改成 case 1: {int b = 5;} 加個大括號即可
10/21 21:37, 3F

10/21 21:39, , 4F
原來如此 感謝
10/21 21:39, 4F

10/22 03:12, , 5F
警告你case 1可能不會被執行到 所以b不會被宣告
10/22 03:12, 5F

10/22 07:21, , 6F
http://ppt.cc/@zdX 參考這篇
10/22 07:21, 6F
文章代碼(AID): #1Cm3oaIn (C_and_CPP)
文章代碼(AID): #1Cm3oaIn (C_and_CPP)