我有一个以unsigned long int
作为输入的程序,所有后续函数都应该接收这样的值。
但是,在main
函数中,当输入18446744073709551557时,它将返回为34359738363435973836,并且当该值传递给另一个函数时,它将被视为3435973836。
为什么会这样?
修改
主要功能如下:
int main()
{
// initalise variables
std::list<unsigned long int> results;
unsigned long int n;
// request user input
std::cout << "Enter a number: ";
std::cin >> n;
std::cout << "You entered: " << n << std::endl;
// populate results list
results = primeFactors(n);
results.sort();
// display results
std::cout << "Factors for " << n << " are: ";
for (int i : results)
{
std::cout << i << " ";
}
return 0;
}
将值传递给函数:
std::list<unsigned long int> primeFactors(unsigned long int n)
{
// initialise variables
std::list<unsigned long int> factors;
bool complete = false;
unsigned long int ans1 = 0;
unsigned long int ans2 = 0;
std::cout << n;
(第二个函数中有很多代码,所以我还没有把它全部包含在内)
答案 0 :(得分:2)
答案 1 :(得分:0)
我不认为18446744073709551557是有效的unsigned long int。
它已超过极限。 c ++数据类型的限制为here...
尝试限制之间的值。如果那时也无法帮助我们查看代码片段并检测错误。