如果 unsigned long 最大值为 4294967295,测试程序如何得出 4294967297?
#include <iostream>
using namespace std;
unsigned long millis_diff(unsigned long then, unsigned long now) {
return now < then ? now + then : now - then;
}
int main()
{
unsigned long now = 2;
unsigned long then = 4294967295; //unsigned long maximum value
unsigned long diff = millis_diff(then, now);
cout << diff;
return 0;
}
最佳答案
原因是编译器定义 unsigned long int
的方式似乎与定义 unsigned long long int
的方式相同。:)
这是一个演示程序
#include <iostream>
#include <limits>
int main()
{
std::cout << "sizeof( unsigned long ) = " << sizeof( unsigned long ) << '\n';
std::cout << "The maximum values is " << std::numeric_limits<unsigned long>::max() << '\n';
}
它的输出是
sizeof( unsigned long ) = 8
The maximum values is 18446744073709551615
关于c++ - unsigned long 大于 0xFFFFFFFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57044616/