在两个值之间切换整数变量的最简单方法

3 c

我有一个变量a只能有两个值x1或x2.如何a在这些值之间切换.我想出了这个.还有其他更有效的方法吗?

a = (a == x1 ? x2: x1);
Run Code Online (Sandbox Code Playgroud)

Mit*_*eat 13

它(高度)不太可能是你的瓶颈,但你可以使用这个XOR方法:

togglex1x2 = (x1 ^ x2);     // This is the combined toggle value

a = x1;            // Initialise to either x1 or x2

a ^= togglex1x2;   // toggles

a ^= togglex1x2;   // toggles

...
Run Code Online (Sandbox Code Playgroud)

[您应该首先编写可理解的代码,并且仅在您测量瓶颈时进行优化(然后仔细检查它是您认为的位置!),如果您进行优化,请确保使用推理进行评论.]

  • 大多数有经验的开发人员都知道XOR交换,但我同意:首先编写可理解的代码,仅在测量瓶颈时进行优化,如果优化,请确保使用推理进行评论. (3认同)
  • @MitchWheat - 我同意大多数开发者都知道这个伎俩 - 但是嘿 - 为什么生活比必要的更难.此外,一些开发人员在微观优化中被消耗掉而忽略了更大的图景 - 甚至更好的优化/可用性更"有利可图" (2认同)
  • @VallabhPatade我认为`?:`"映射到硬件".还是神奇的? (2认同)

Val*_*ade 6

尝试这样的事情.将在x1和x2之间切换

a = (x1 + x2) - a;
Run Code Online (Sandbox Code Playgroud)

  • ...和希望(x1 + x2)<INT_MAX (8认同)