作者wahaha99 (此方不可長)
看板C_and_CPP
標題[問題] 當 switch 遇到 int *a = new int [x];
時間Thu Oct 21 21:14:10 2010
遇到一個不解的問題:
本來 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)
推 johnlinvc:大概是你後面還有用到b 10/21 21:35
推 Falldog:case裡面的指令可以用{}包起來 宣告就不會有問題了 10/21 21:36
推 wawi:改成 case 1: {int b = 5;} 加個大括號即可 10/21 21:37
→ wahaha99:原來如此 感謝 10/21 21:39
推 herman602:警告你case 1可能不會被執行到 所以b不會被宣告 10/22 03:12