-6
#include <tchar.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
    int a = (1024^3)-(639^3)-(385^3);
    short max = 0;
    cout<< " Prints 0 if no answer." << endl;

    for(int iii = 100; iii < 1000; iii++)
    {
        if(a % iii = 0)
        {
            max = iii;
        }
    }
    cout<< " " << max;

    cin.clear(); cin.ignore(); cin.get();
    return 0;
}

計算する必要がないように単純なプログラムを作成しようとすると、コンパイラは 14 行目で C2106 エラーを返します。

4

3 に答える 3

3
if (a % iii = 0)

これは無効な割り当てです。比較するつもりなら、比較演算子を使用してください==

if (a % iii == 0)

^また、 C++ ではべき乗は行われません。それは実際にはビット単位のxor演算子です。べき乗を行うにはstd::pow<cmath>ヘッダーから使用します。

#include <cmath>

int main()
{
    int a = std::pow(1024, 3) - std::pow(639, 3) - std::pow(385, 3);
}
于 2013-04-25T11:56:07.770 に答える
1

比較のために == にする必要があります

       if((a % iii) == 0)
于 2013-04-25T11:54:40.913 に答える
1

=等値演算子の代わりに代入演算子を使用しています==:

if(a % iii = 0)

これは次のようになります。

if( a % iii == 0)

の結果a % iiiは一時的であり、元のコードでは、その一時的に割り当てようとして0います。そのエラーに加えて、ここでべき乗でいくつかの数値を上げようとしているようです:

int a = (1024^3)-(639^3)-(385^3);

^演算子は実際にはビット単位であり、xor必要なものはヘッダーpowからのものです。cmath

int a = std::pow(1024,3)-std::pow(639,3)-std::pow(385,3);

私も避けusing namespace stdます。

于 2013-04-25T11:54:50.150 に答える