0

有没有更有效的执行方式:

f = fmod(x+1, 2)

确定一个值是否是偶数?

例如

f = 1对于所有偶数值x

f = 0对于所有奇数值x

我只需要它来处理一组正整数(我的x数据类型是int

4

3 回答 3

5

你为什么使用fmod()整数?

标准测试将是:

const int f = (x + 1) % 2; /* Will be 1 if x is even, 0 if it's odd. */

这使用内置的整数模运算符%进行测试。

添加 1 (在我看来)有点令人困惑,我会这样做:

const int f = (x % 2) == 0;

“按位思考”的人经常将测试写成:

const int f = (x & 1) == 0;

因为必须清除最低有效位才能使整数为偶数。不过,这可以说不太清楚。

于 2013-04-08T15:03:45.213 回答
4

假设正整数

f = 1 - (x&1);

应该为你工作。

于 2013-04-08T15:04:25.210 回答
1

我想你可以只转换为 int ......

f = (int)x % 2;
于 2013-04-08T15:04:15.523 回答