所以这是我的代码
#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;的右手操作数。 (或者没有可接受的对话)
有人可以告诉我我做错了什么,以及如何解决?
答案 0 :(得分:3)
您正在将div_t视为int;它不是一个。它是一个结构。
请参阅http://en.cppreference.com/w/cpp/numeric/math/div
你能解释一下你想做什么吗?显然,有重复的分工意图,但这是我所猜测的全部。
答案 1 :(得分:0)
output
是div_t
。 x
是int
,因此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;
}
会提供相同的结果而不用大惊小怪。