简单数学程序中的C2106错误

时间:2013-04-25 11:52:53

标签: c++ math

#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错误。

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

应该==进行比较

       if((a % iii) == 0)

答案 2 :(得分:1)

您正在使用赋值运算符=而不是等于运算符==

if(a % iii = 0)

这应该是:

if( a % iii == 0)

a % iii的结果是临时的,在原始代码中,您尝试将0分配给该临时代码。除了那个错误之外,看起来你正试图通过这里的力量来筹集一些数字:

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

^运算符实际上是按位xor,您需要cmath标题中的pow

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

我也会避免using namespace std