次のような条件付き評価を使用せずに、値または式を条件付きで否定するインラインの方法はありますか?:
result = (condition) ? value : -value;
result = value * ((condition) ? 1 : -1);
私は現在 JavaScript で作業していますが、それを使用する他の言語についても同じことを考えていました。
次のような条件付き評価を使用せずに、値または式を条件付きで否定するインラインの方法はありますか?:
result = (condition) ? value : -value;
result = value * ((condition) ? 1 : -1);
私は現在 JavaScript で作業していますが、それを使用する他の言語についても同じことを考えていました。
できます(bool - !bool * 1) * value
。true の場合、false の場合(bool - !bool * 1)
は返します。メソッドはおそらくやり過ぎです。元の読み取り可能なコードに固執します。C/C++ を使用すると、マクロを使用できます (ただし、2 回評価されることに注意してください)。1
-1
bool
編集: (bool - !bool) * value
Javascript と PHP で動作します (他はテストしていません)。* 1
int であるはずだったことがわからなかった場合に備えて、最初に追加したと思います:P
これが速いかどうかはわかりませんが(算術式は分岐よりも速いと思いますが)、他の人が言っているように、おそらく速度について心配する必要はありません。あなたも多くのキャラクターを節約していません:P
読みやすさが心配な場合は、もう少し理解しやすい代替手段を次に示します。
result = value;
if(some_condition){
result *= -1;
}