FIXED:收到num变量并将其打印在计算器屏幕上的函数,收到了" int"参数
我是初学者并试图在控制台上制作计算器。您必须像在实际计算器中一样键入每个数字,它们出现在左侧。
这是获取下一个输入数字的函数,所以我知道我必须运行多少0。
int getDigits(int number)
{
int getDigits = 0;
while (number) {
number /= 10;
getDigits++;
}
return getDigits;
}
更新的GETDIGIT功能
long long getDigits(long long number)
{
long long getDigits = 0; //i know long long wasn't needed here
while (number) {
number /= 10;
getDigits++;
}
return getDigits;
}
计算器屏幕上显示的主号码是一个很长的数字" num"并且它在迭代时每次都会改变。
case 1:
long long aux, aux2;
cout << "Number: "; cin >> aux;
aux2 = pow(10, getDigits(aux));
num *= aux2;
num += aux;
break;
这只是将第二个输入放在右边。它工作得很好但是 在这种情况下,&#34; num&#34; excel 11变量,它只是一个负数(我不知道为什么,我手动完成操作,它应该工作正常)。例如:
输入:1
num = 1
输入:2
num = 12
但是当它达到11位
时num = 12345678911
input = 1
num = -538112777(而不是123456789111)
这是为什么?我所有的变量都很长,应该足够了,非常感谢。
答案 0 :(得分:1)
C ++中的整数容量有限。超出容量或范围会导致溢出。
溢出可以环绕并变为负数。该平台可能会生成溢出异常。
答案 1 :(得分:0)
仔细查看您的代码,首先
{
int getDigits(int number)
{
int getDigits = 0;
while (number) {
number /= 10;
getDigits++;
}
return getDigits;
}
您正在将getDigits(long long aux)
传递给getDigit
函数,这是错误的。
另外:为什么值变为负数:8位用于存储人民币,其中人民币从右到左为第8,第一个从左到右,当值超过二进制127时,最右边的位被设置为值负。 签名的所有数据类型
也是如此答案 2 :(得分:0)
FIXED:收到num变量并将其打印在计算器屏幕上的函数,收到“int”参数