float f = -0.050000;
次のルールを実行したい:
if (f < 0) f -= 0.2;
else f += 0.2;
1行で行うオプションはありますか?
これには、C++ ブランチレスsignum関数の修正版を使用できます。
f += 0.2 * ((0<=f)-(f<0));
表現
(0<=f)-(f<0)
が 0 未満の場合、 が 0 以上の場合-1
に評価されます。f
1
f
あなたがすることができます:
f += (f < 0) ? -0.2 : +0.2;
条件演算子を使ってみませんか?
f += (f < 0) ? -0.2f : 0.2f;