私はこのコードを使おうとしています:
if (iteration % pow(256.0, 7) == 0) {
私のプログラムの1つで、しかしエラーコンソールは言う:
エラーC2297:'%':不正です。右オペランドのタイプは'double'です。
このエラーを回避するにはどうすればよいですか?
タイトルに記載されているように、答えは結果を整数にキャストすることです。
if (iteration % static_cast<int>(pow(256.0, 7)) == 0)
pow(256.0, 7)
は整数として表現できるので、おそらく適切な定数として定義する必要があります。
const int64_t pow_256_7 = 1LL << (8 * 7); // 256^7
次に、次のようにテストを実行します。
if ((iteration % pow_256_7) == 0)
iteration % pow(256.0, 7)
ここでをpow
返しますdouble
。ただし、 (または)タイプには適用%
できません。double
float
%
、、、などint
のインターグラルタイプにのみ適用できます。short
char
このエラーを回避するにはどうすればよいですか?
何を達成しようとしていますか?多分あなたはこれを行うことができます:
iteration % static_cast<__int64>(pow(256.0, 7))
または単にこれ:
const __int64 value = 256ULL * 256 *256 *256 *256 *256 *256;
if ( iteration % value == 0 )