-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 回答