またはa
の 2 つの値しか持てない変数があります。これらの値を切り替える方法。私はこれを思いつきました。他のより効率的な方法はありますか?x1
x2
a
a = (a == x1 ? x2: x1);
またはa
の 2 つの値しか持てない変数があります。これらの値を切り替える方法。私はこれを思いつきました。他のより効率的な方法はありますか?x1
x2
a
a = (a == x1 ? x2: x1);
このようなことを試してください。a は x1 と x2 を切り替えます
a = (x1 + x2) - a;
もう 1 つの方法は、インデックスを 0 と 1 の間で切り替えて、それを使用して配列にインデックスを付けることです。
int main() {
int const values[] = {0x55, 0xaa};
int selector = 0;
selector ^= 1; // toggle index
int value = values[selector]; // select value
}
ベンチマークしましたが、これがボトルネックですよね?
ああ、いや、効率のことは忘れてください。これは、すぐに評価される非常に小さな式です。
ところで、他の方法もありますが、1. それらは本当に高速である、2. 高速である場合、それは本当に重要である、3. 低速である場合、読みやすさのペナルティはトレードオフの価値があるかどうかはわかりません。
例えば:
#define FIRST 42
#define SECOND 1337
/* initialize */
int x = FIRST;
/* toggle */
x = FIRST + SECOND - x;