3

簡単なことを行うコードがいくつかあります:

パラメータの値が -1 の場合、値を変更する必要があります。そうでなければ - 何もしない

20個のパラメータのリストがありますが、実行せずにチェックする方法があるかどうか知りたいです:

if param1 == -1 then ... else...

if param2 == -1 then.... そうでなければ...

より効率的にするために何ができるか、誰にもわかりませんか?ありがとう!

4

4 に答える 4

4

パラメータがすべて変数である場合(配列などではない)、関数を作成して書くことができます

change_or_let_it_be( &param1, value );
change_or_let_it_be( &param2, value );
change_or_let_it_be( &param3, value );

そして、if(関数内)が1つしかなく、多くの呼び出しがあります。何らかの構造(配列、リストなど)に保存し、この関数を20回呼び出さないようにすることをお勧めします。

于 2013-06-05T08:55:08.480 に答える
3

ご希望の内容が理解できているかわかりませんが、これはいかがですか?

void func(int params[20]) {
    for (int i = 0; i < 20; ++i) {
        if (params[i] == -1)
            params[i] = NEW_VALUE;
    }
}

for を使用してすべての値をチェックするため、さまざまな値をすべてハードコーディングする必要がなく、-1 の場合はパラメーターを変更します。また、「効率的」とは、ここでのコード作成時間がより効率的であることを意味すると仮定していることにも注意してください。

于 2013-06-05T09:04:04.293 に答える
0

別のよりクリーンなソリューション:

int *p[] = {&param1, &param2, &param3, NULL};
int i = 0;
for(;p[i] != NULL; i++) {
    if(*p[i] == -1) *p[i] = SOME_VALUE;
}
于 2013-06-05T10:49:37.207 に答える