我不明白的C ++错误

时间:2016-09-29 19:59:07

标签: c++

所以这是我的代码

#include "stdafx.h"
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int kol=0, x;

cout << "Insert a number: ";
cin >> x;

while (x > 0);
{
    div_t output;
    output = x;
    x = div(output, 10);
    kol += kol;
}
cout << "Amount: " << kol << endl;
system ("pause");
return 0;
}

我收到了这个错误: 错误1错误C2679:二进制&#39; =&#39; :找不到哪个运算符采用类型&#39; int&#39;的右手操作数。 (或者没有可接受的对话)

有人可以告诉我我做错了什么,以及如何解决?

2 个答案:

答案 0 :(得分:3)

您正在将div_t视为int;它不是一个。它是一个结构。

请参阅http://en.cppreference.com/w/cpp/numeric/math/div

你能解释一下你想做什么吗?显然,有重复的分工意图,但这是我所猜测的全部。

答案 1 :(得分:0)

outputdiv_txint,因此output = x就像尝试将苹果分配给橙色一样。如果没有建立一套将苹果变成橙色的规则,你就无法做到。

我们可以尝试写这样的规则,但为什么要这么麻烦?相反,让我们看看让我们陷入困境的代码,并试图找出背景。

while (x > 0);
{
    div_t output;
    output = x;
    x = div(output, 10);
    kol += kol;
}

此循环的目的似乎是计算x除以10的次数并将计数存储在kol中。

div_t是调用div的结果,因此在执行将生成结果的操作之前为结果赋值是触摸异常。也许OP意味着

while (x > 0);
{
    div_t output;
    output = div(x, 10);
    kol += kol;
}

x除以10,得到商和余数。

但是这个循环永远不会退出,因为x永远不会改变。如果它不为零,则循环将永远不会终止,如果它为零,则循环将永远不会进入。也许

while (x > 0);
{
    div_t output;
    output = div(x, 10);
    x = output.quot;
    kol += kol;
}

会更合适。但是从未使用过其余部分,因此div被有效地浪费了并且

while (x > 0);
{
    x = x / 10; // or x /= 10;
    kol += kol;
}

会提供相同的结果而不用大惊小怪。