実行するためのより効率的な方法はありますか:
f = fmod(x+1, 2)
値が偶数かどうかを確認するには?
例えば
f = 1
のすべての偶数値に対してx
f = 0
のすべての奇数値に対してx
正の整数のセットに対してのみこれが機能する必要があります(私のx
データ型はですint
)
なぜ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;
整数が偶数になるには、最下位ビットがクリアされている必要があるためです。ただし、それはあまり明確ではないと主張できます。
正の整数を仮定
f = 1 - (x&1);
あなたのために働くはずです。
int にキャストすることもできると思います...
f = (int)x % 2;