用一行书写:加或减一个数字的符号

write it in one line: add or reduce by a sign of a number

本文关键字:一个 数字 符号 一行 书写      更新时间:2023-10-16
float f = -0.050000;

我想做下一个规则:

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

有一个选项来做一行?

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

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

的表达式
(0<=f)-(f<0)

f小于0时求-1,在f大于等于0时求1

如果有copysign或等效的文件,则

f += copysign(0.2,f);

可能是现代计算机中最快的,因为它避免了分支。考虑到现代cpu上处理管道的长度,分支错误预测很容易造成几个周期的损失

你可以这样做:

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

如何使用条件运算符?

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