0

私はこのコードを使おうとしています:

if (iteration % pow(256.0, 7) == 0) {

私のプログラムの1つで、しかしエラーコンソールは言う:

エラーC2297:'%':不正です。右オペランドのタイプは'double'です。

このエラーを回避するにはどうすればよいですか?

4

3 に答える 3

2

タイトルに記載されているように、答えは結果を整数にキャストすることです。

if (iteration % static_cast<int>(pow(256.0, 7)) == 0) 
于 2012-08-25T15:46:38.473 に答える
2

pow(256.0, 7)は整数として表現できるので、おそらく適切な定数として定義する必要があります。

const int64_t pow_256_7 = 1LL << (8 * 7);  // 256^7

次に、次のようにテストを実行します。

if ((iteration % pow_256_7) == 0)
于 2012-08-25T15:52:58.903 に答える
0
iteration % pow(256.0, 7)

ここでをpow返しますdouble。ただし、 (または)タイプには適用% できません。doublefloat

%、、、などintのインターグラルタイプにのみ適用できます。shortchar

このエラーを回避するにはどうすればよいですか?

何を達成しようとしていますか?多分あなたはこれを行うことができます:

iteration % static_cast<__int64>(pow(256.0, 7))

または単にこれ:

const __int64 value = 256ULL * 256 *256 *256 *256 *256 *256;

if ( iteration % value  == 0 ) 
于 2012-08-25T15:44:15.647 に答える