C++ 把它写在一行:用数字符号加或减

C++ 把它写在一行:用数字符号加或减,c++,C++,我想做下一个规则: float f = -0.050000; 如果(f

我想做下一个规则:

float f = -0.050000;
如果(f<0)f-=0.2;
否则f+=0.2;
有一个选项可以通过一行完成吗?

您可以执行以下操作:

if (f < 0) f -= 0.2;
else       f += 0.2;
f+=(f<0)-0.2 : +0.2;

使用条件运算符怎么样

f += (f < 0) ? -0.2 : +0.2;
f+=(f<0)-0.2f:0.2f;

可以使用C++的无分支函数的修改版本:

f += (f < 0) ? -0.2f : 0.2f;
f+=0.2*((0

(0<=f)-(f<0)

可能是现代计算机中最快的,因为它避免了分支。考虑到现代CPU上处理管道的长度,很容易花费几个周期

使用三元运算符
使用'f+=std::sgn(f)*0.2;'
(0<=f)-(f<0)
f += copysign(0.2,f);