異なるラベルを使用して各ラベルが特定の操作を行い、いくつかの操作が共通操作を書き換えずに共通の操作を行う方法はありますか? 私が代わりにこれの意味:使用オーバーラップ操作のスイッチで複数のケース
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;
}
以下のようなものがなく、出力はB、C及びD入力に対して0x08ので立ち往生していません。入力はB、C以上である場合
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;
}
私が必要D出力は、続いて0x02、0x04または0x08に割り当てられます。それは可能でしょうか? ありがとう!
はい、可能です - 'goto'を使用してください。それが推奨されるかどうかは別の問題かもしれません... –
あなたの最初のバージョンは判読可能であり、何も間違っていません。 'switch'文を使って巧妙なやり方をしようとするとバグが発生しやすく、2行のコードを保存する価値はありません。 – acraig5075
@BJMyers私はgotoを使用しないことを好むが、あなたの提案に感謝 – 1chenar