C中是否有任何方式通過不同的案例標籤,每個標籤都執行特定的操作和一些常用操作,而無需重寫常用操作? 我的意思是不是這樣的:開關重疊操作中的多個案例
switch(input)
{
case A:
//do nothing
break;
case B:
data = 0x02;
output = data;
break;
case C:
data = 0x04;
output = data;
break;
case D:
data = 0x08;
output = data;
break;
default:
//do nothing
break;
}
使用類似以下,但輸出不爲0x08的對於B卡,C和d輸入:
switch(input)
{
case A:
//do nothing
break;
case B:
data = 0x02; //specific operation for B
case C:
data = 0x04; //specific operation for C
case D:
data = 0x08; //specific operation for D
output = data; //common operation for all B,C,D labels
default:
//do nothing
break;
}
我需要的,如果輸入B,C或D輸出隨後分配給0x02,0x04或0x08。它可能嗎? 謝謝!
是的,有可能 - 使用「goto」。不管這是否可取也可能是另一回事...... –
你的第一個版本是可讀的,可以理解的,它沒有任何問題。試圖用'switch'語句做聰明的技巧是容易出錯的,不值得保存幾行代碼。 – acraig5075
@BJMyers我不想使用goto,但感謝您的建議 – 1chenar