【问题标题】:Simplify if condition code in C简化 C 中的 if 条件代码
【发布时间】:2016-01-12 19:21:56
【问题描述】:

如何简化这三个简单的 if 条件?

if(v.x < 0)
{
    v.x *= -1;
}
if(v.y < 0)
{
    v.y *= -1;
}
if(v.z < 0)
{
    v.z *= -1;
}

【问题讨论】:

  • 想想你认为这段代码做了什么(顺便说一句,不确定它是否可以“简化”。但它可以以更简洁的形式重写)?
  • 如果v.x, v.y, v.zunsigned,代码可以简化为; ;-)

标签: c if-statement simplify


【解决方案1】:
#include <stdlib.h>
...
v.x = abs(v.x);
v.y = abs(v.y);
v.z = abs(v.z);

labsllabsfabs (&lt;math.h&gt;) 等,具体取决于您的号码类型。

【讨论】:

  • abs() 系列函数只需要 stdlib.h,不需要 math.h
  • @user3629249 甚至工厂?
  • abs() 系列函数仅与整数类型有关。 fabs() 系列函数是关于浮点数和双精度的,因此不属于 abs() 系列函数。
【解决方案2】:

你可以这样做:

v.x = (v.x < 0) ? (v.x * -1) : (v.x) ;
v.y = (v.y < 0) ? (v.y * -1) : (v.y) ;
v.z = (v.z < 0) ? (v.z * -1) : (v.z) ;

这使用 C ternary operator

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多