2

私は C とプログラミング全般の初心者であり (C/C++ でプログラミングを始めて 2 年になります)、これまでに作成したプログラムの種類は、引数を取り、それらに対して操作を行うコマンド ライン演算プロセッサだけでした。入力が何であるかに基づいて何をすべきかのフォークはありません。そのようなことを行う方法がわからないので、最近行っていることは、次のような方法でプログラムを設計することです。

printf("What feature to use?");
int response;
scanf("%d", response);
if (response == 1)
{
     feature01();
}
if (response == 2)
{
     feature02();
}

…と、こう続けます。独自の機能が通常 10 個未満の私のプログラムでは、これで問題ありませんが、当分の間だけです。50 ~ 100 個の独自の分岐機能を備えたプログラムを作成したことがあるとしたら、問題が発生する可能性があります。上記の方法で if ステートメントを使用せずに、入力を処理してさまざまな機能に分岐するにはどうすればよいでしょうか?

4

2 に答える 2

3

多くの状況ifで、相互に排他的な値に関する一連のステートメントを次のように置き換えることができます。switch

switch (response)
{
    case 1:
        feature01();
        break;
    case 2:
        feature02();
        break;
    default:
        featureXX();
        break;
}

これは、次とほぼ同等です。

if (response == 1)
{
    feature01();
}
else if (response == 2)
{
    feature02();
}
else
{
    featureXX();
}

switch...コンパイラがもう少し最適化できることを除いて。

于 2013-06-09T22:03:36.447 に答える