是否有更有效的方式:
f = fmod(x+1, 2)
确定值是否均匀?
e.g。
对于f = 1
的所有偶数值, x
对于f = 0
x
我只需要这个就可以用于正整数集(我的x
数据类型是int
)
答案 0 :(得分: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;
因为必须清除最低有效位才能使整数为偶数。不过,可以说这不太清楚。
答案 1 :(得分:4)
假设正整数
f = 1 - (x&1);
应该适合你。
答案 2 :(得分:1)
你可以直接转换为int,我想......
f = (int)x % 2;