0

次のような条件付き評価を使用せずに、値または式を条件付きで否定するインラインの方法はありますか?:

result = (condition) ? value : -value;
result = value * ((condition) ? 1 : -1);

私は現在 JavaScript で作業していますが、それを使用する他の言語についても同じことを考えていました。

4

2 に答える 2

1

できます(bool - !bool * 1) * value。true の場合、false の場合(bool - !bool * 1)は返します。メソッドはおそらくやり過ぎです。元の読み取り可能なコードに固執します。C/C++ を使用すると、マクロを使用できます (ただし、2 回評価されることに注意してください)。1-1bool

編集: (bool - !bool) * valueJavascript と PHP で動作します (他はテストしていません)。* 1int であるはずだったことがわからなかった場合に備えて、最初に追加したと思います:P

これが速いかどうかはわかりませんが(算術式は分岐よりも速いと思いますが)、他の人が言っているように、おそらく速度について心配する必要はありません。あなたも多くのキャラクターを節約していません:P

于 2013-07-17T22:12:22.867 に答える
1

読みやすさが心配な場合は、もう少し理解しやすい代替手段を次に示します。

result = value;
if(some_condition){
    result *= -1;
}
于 2013-07-17T22:14:03.343 に答える