【发布时间】:2019-08-04 09:14:01
【问题描述】:
嗨,我真的是 C++ 新手,我想编写一个代码,它接收来自用户的数字并将其数字相加,并一直这样做,直到它得到一个数字并返回它作为结果。但是我注意到当我的数字很大时(比如 15 位长),错误的数字会存储在我声明用于存储用户输入的变量中。我该怎么办?
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int get_sum(long x) {
cout << x<<endl;
if (x < 10) {
return x;
}
else {
string num_in_str = to_string(x);
long result=0;
for (int i = 0; i < num_in_str.size(); i++) {
int digit = num_in_str[i] - '0';
result += digit;
}
return get_sum(result);
}
}
int main()
{
long input;
cin >> input;
int final_result = get_sum(input);``
cout << final_result;
}
【问题讨论】:
-
long long应该这样做,如果您使用的是 64 位平台。 -
为什么要满足于应该?
int_least64_tfrom <cstdint> 会给你 64 位或死去尝试。 -
@user4581301,这只是一个糟糕的选择。
long long会这样做,如果你在 64 位平台上。 -
@SidS 你有这个权利。从 C++11 开始,
long long保证 64 位, -
请注意,无论您选择何种整数数据类型,总和仍可能溢出。
标签: c++