case後面的語句不需要加大括號,只要別忘了break就行。不過有的程式設計規範上會建議用大括號把case後面的語句括起來。你說的“不能透過編譯”,可能是下面這個原因。C/C++裡規定,不能在case語句裡定義區域性變數。例如:inta=2;switch(a){case1:intc=10;break;case2:break;default:break;}編譯就會出錯,原因是在case1裡定義了局部變數c。而C/C++還有一個很有意思的規定,用{}包括的語句,認為是一個”語句塊“,而在語句塊裡就能想幹什麼就幹什麼。比如:switch(a){case1:{intc=10;break;}case2:break;default:break;}這樣就能透過編譯了。再多說兩句廢話。C/C++裡這個用{}括起來的語句塊,可以認為是一段完全獨立的程式碼。比如:inta=2;{inta=3;}這樣完全沒問題。而你要是把這對大括號刪掉,就會出錯。
case後面的語句不需要加大括號,只要別忘了break就行。不過有的程式設計規範上會建議用大括號把case後面的語句括起來。你說的“不能透過編譯”,可能是下面這個原因。C/C++裡規定,不能在case語句裡定義區域性變數。例如:inta=2;switch(a){case1:intc=10;break;case2:break;default:break;}編譯就會出錯,原因是在case1裡定義了局部變數c。而C/C++還有一個很有意思的規定,用{}包括的語句,認為是一個”語句塊“,而在語句塊裡就能想幹什麼就幹什麼。比如:switch(a){case1:{intc=10;break;}case2:break;default:break;}這樣就能透過編譯了。再多說兩句廢話。C/C++裡這個用{}括起來的語句塊,可以認為是一段完全獨立的程式碼。比如:inta=2;{inta=3;}這樣完全沒問題。而你要是把這對大括號刪掉,就會出錯。