4

またはaの 2 つの値しか持てない変数があります。これらの値を切り替える方法。私はこれを思いつきました。他のより効率的な方法はありますか?x1x2a

a = (a == x1 ? x2: x1);
4

5 に答える 5

8

このようなことを試してください。a は x1 と x2 を切り替えます

a = (x1 + x2) - a;
于 2013-09-22T06:26:59.330 に答える
4

もう 1 つの方法は、インデックスを 0 と 1 の間で切り替えて、それを使用して配列にインデックスを付けることです。

int main() {
    int const values[] = {0x55, 0xaa};
    int selector = 0;

    selector ^= 1;                // toggle index
    int value = values[selector]; // select value
}
于 2013-09-22T10:01:48.730 に答える
2

ベンチマークしましたが、これがボトルネックですよね?

ああ、いや、効率のことは忘れてください。これは、すぐに評価される非常に小さな式です。

ところで、他の方法もありますが、1. それらは本当に高速である、2. 高速である場合、それは本当に重要である、3. 低速である場合、読みやすさのペナルティはトレードオフの価値があるかどうかはわかりません。

例えば:

#define FIRST 42
#define SECOND 1337

/* initialize */
int x = FIRST;

/* toggle */
x = FIRST + SECOND - x;
于 2013-09-22T06:28:33.823 に答える