每个人都知道abs()函数来获得变量的绝对值。有没有一个类似的功能或有效的方法设置它忽略标志?
实例:
电机速度控制力最小值

if (abs(speed) < 50 && speed != 0)
{
    if (speed < 0)
        speed = -50;
    else
        speed = 50;
}

我正在寻找一个标准化的函数或一个聪明的位操作一行。
很明显,如果将上述内容包装到函数或宏中。

最佳答案

基本上是signum函数

speed = 50*sgn(speed);

这个有一个standard function
speed = copysign(50, speed);

但是对于整数类型,这不是很有效。
sgn()函数可以使用各种其他方法实现,您可以找到here
speed = ((speed > 0) - (speed < 0))*50;

关于c - 如何设置/更改变量的绝对值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49691135/

10-11 22:58