私はこのコードを使おうとしています:
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。ただし、 (または)タイプには適用% できません。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 )