fmod(x,2)的有效替代方案

bph*_*bph 0 c math

是否有更有效的执行方式:

f = fmod(x+1, 2)
Run Code Online (Sandbox Code Playgroud)

确定价值是否均匀?

例如

f = 1 对于所有偶数值 x

f = 0 对于所有奇数值 x

我只需要这个为正整数集合工作(我的x数据类型是int)

unw*_*ind 5

你为什么用fmod()整数?

标准测试将是:

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

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

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

const int f = (x % 2) == 0;
Run Code Online (Sandbox Code Playgroud)

"有点思考"的人经常把测试写成:

const int f = (x & 1) == 0;
Run Code Online (Sandbox Code Playgroud)

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