我有这个功能
int f(int x) {
if (x == 0)
return 0;
return 1;
}
是否可以在不使用if
语句的情况下编写等效函数?
答案 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
......