我只是想知道如果有人可以給我一個如何使用開關/外殼的例子。我有點得到它,但我很難找出什麼以及如何使用它。先謝謝你。我想知道如何正確使用開關/外殼
-1
A
回答
0
假設你有一個枚舉
enum expr_type {
EXPR_TYPE_ADD,
EXPR_TYPE_SUBTRACT,
EXPR_TYPE_GET_VALUE
};
我們可以做這個開關:
enum expr_type t = /* get input somehow and find the type */;
switch(t) {
case EXPR_TYPE_ADD:
cout << "Operator Add";
/* fall through */
case EXPR_TYPE_SUBTRACT:
cout << "Operator (Add or Subtract)";
break;
case EXPR_TYPE_GET_VALUE;
cout << "Getting some value";
break;
}
你必須把突破;所以它不會貫穿 - 目前,EXPR_TYPE_ADD
將exponute EXPR_TYPE_SUBTRACT
的所有代碼。確保正確使用break
!
1
這是一個相當典型的用例。你有一個值列表(枚舉)和一個開關,它檢查輸入以確定你正在處理的是哪一個。這當然假定您將採取的操作取決於枚舉的基礎值。
enum ImageFormat
{
FormatRGB888,
FormatRGB8888,
FormatRGB101010,
FormatRGB161616,
FormatRGB16161616
};
void SomeFunc(ImageFormat format)
{
switch(format)
{
case FormatRGB888:
// do stuff
break;
case FormatRGB8888:
// do stuff
break;
case FormatRGB101010,
// do stuff
break;
case FormatRGB161616:
// do stuff
break;
case FormatRGB16161616:
// do stuff
break;
default:
// bad value for 'format'
}
}
2
有幾件事情要記住開關case語句:
一)條件應該是integeral /枚舉/用戶定義類型支持轉換到int或枚舉
b)中的情況下標貼是編譯時間常數
c)中沒有兩個標籤的情況下的表達式可以具有相同的值
d)$ 6.4.2/5-「當開關S執行評分,評估其狀況,並與每種情況進行比較。如果其中一個案例常量等於條件的值,則控制權將傳遞給匹配案例標籤後面的語句。如果沒有大小寫常量與條件匹配,並且存在默認標籤,則控制權傳遞給由默認標籤標記的語句。如果沒有大小寫匹配,並且沒有默認值,那麼交換機中沒有任何語句執行。「
e)$ 6.4.2/6-」情況和默認標籤本身不會改變控制流,繼續暢通無阻地穿過這些標籤。爲了從交換機退出,看到破發」
enum direction {north, south, east, west};
char x;
class UD{
operator int(){return 0;}
};
direction f1(){
return north;
}
char f2(){
return 'A';
}
int main(){
direction d = f();
string country;
// switch condition of type enum
switch(d){
case north:
country = "P";
break;
case south:
country = "Q";
break;
case east:
country = "R";
break;
case west:
country = "S";
break;
default:
country = "";
break;
}
// switch condition of integral type
switch(c){
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
cout << "Vowel";
break;
default:
cout << "Not a Vowel";
break;
}
UD u;
// switch condition of user defined type (conversion to integral type)
switch(u){
case 0:
case 1:
cout << "Good";
break;
default:
cout << "Not so good";
break;
}
}
0
開關語句是做了很多的IFS的一個更有效的方式和別人的。
相關問題
- 1. 想知道如果sql語句正確
- 2. 我想知道如何正確寫一個try except語句?
- 3. 不知道如何正確使用SetActive()
- 4. 哈斯克爾開關/外殼使用
- 5. 想知道SQL是否正確
- 6. 想知道如果我的JSP格式正確
- 7. 想知道使用
- 8. Div不正確浮動。我不知道我在想什麼
- 9. 開關和外殼選項
- 10. 開關和外殼錯誤?
- 11. 如何在java遊戲中使用開關和外殼?
- 12. 如何使用開關和外殼生成圖片?
- 13. 格式不正確外殼
- 14. 想知道taskAffinity&launchModes的正確使用嗎?
- 15. 我想知道所有關於編碼
- 16. 獲取有關我想知道屬性
- 17. 我想知道關於斯卡拉
- 18. 我想知道有關編程
- 19. 我想知道MKMapView?
- 20. 想知道如何使用select插入
- 21. 我如何知道我的應用程序正在關閉?
- 22. 如何知道Delphi應用程序未正確關閉?
- 23. 如何等待小吃店?我想知道它何時關閉
- 24. 打開外殼打開外殼?
- 25. php開關/外殼不起作用
- 26. 如何彌補我想知道作品
- 27. 我想知道如何在乳膠
- 28. 我想知道使用在Firefox中的「Web開發工具欄」
- 29. 知道從外殼中使用哪個WM
- 30. 如何使用ADB外殼?
謝謝你。所以basicallt它可以增加更多,如果的和別人的然後。 – 2010-08-24 16:12:26
那麼,你總是可以使用if/else if,但是開關給你1.恆定的查找時間和2.如果需要的話可以通過(儘管#2在你意外掉線時可能會有問題) – 2010-08-24 16:39:03