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 に答える