switch-case
switch-case在C++中,可視為一種優雅的if-else-if
if (Expression == 1)
{
//Statement1
}
else if (Expression == 2
{
//Statement2
}
else
{
//Statement
}同義於
switch (Expression)
{
case 1:
//Statement1
break;
case 2:
//Statement2
break;
default:
//Statement
}if-else無法轉成switch-case的情況
if-else無法轉成switch-case的情況Expression的結果會直接與case後面的「結果」做比對,看看是否相同。在此必須注意,無法比對float、double這種浮點數,很不幸的是浮點數本質上代表著「誤差」,跟據IEEE754的定義,也是存在著誤差容訊範圍,又因為各家的complier的不同,浮點數的誤差又略為不同。
所以,若要使用浮點數做if-else的判斷時,建議使用範圍(>, >=, <, <=),而非==,比較不會造成無法預期的情況發生。
特別注意break
break在C++中,不用break跳出時,會緊接著下一個case執行,在這種情況,必須寫註解說明。這種情況,儘可能的避免。
case排序的建議:
case排序的建議:由上到下
依字母或數字順序(A~Z, 0~9)
先置入正常,再置入例外(正常~例外)
先置入常見,再置入不常見(常見~不常見)
default的妙用
default的妙用要用所有的case包含所有的情況,這時default就要拿來處理「絕對不應該發生」的情況。
參考自《Code Complete2》
Last updated
Was this helpful?