在不使用if语句的情况下寻找等效函数

时间:2017-10-31 20:50:31

标签: c function if-statement

我有这个功能

int f(int x) {
  if (x == 0)
    return 0;
  return 1;
}

是否可以在不使用if语句的情况下编写等效函数?

3 个答案:

答案 0 :(得分:3)

该函数将x转换为布尔值。

您可以使用三元运算符代替if语句:

int f(int x) { return x ? 1 : 0; }

有更简单的方法可以做到这一点:

int f(int x) { return x != 0; }

int f(int x) { return !!x; }

你甚至可以使用C99 bool类型,但它有点容易出错:

#include <stdbool.h>
int f(int x) { return (bool)x; }

以下是一些有趣的选择:

int f(int x) { return x>0|0>x; }
int f(int x) { return x<0|0<x; }

答案 1 :(得分:2)

你可以这样做:

return x ? 1 : 0;

答案 2 :(得分:2)

只需写下:return x != 0 ......