unsigned long long int类型能否覆盖1-10^9的整数范围?
关于
unsigned long long int覆盖1-10^9范围的解答 让我把这两个相关问题合并起来解答,核心都是确认这个类型的取值范围和目标区间的匹配度:
问题1:unsigned long long int类型是否足以覆盖1-10^9的数值范围?
绝对足够!根据C/C++的标准定义,unsigned long long int的取值范围是从0到2^64 - 1(也就是18446744073709551615),这个最大值比109(即1000000000)大了好几个数量级,1到109之间的所有整数都能被它轻松容纳。问题2:要求每个整数取值为闭区间1-10^9,使用unsigned long long int类型变量是否满足该范围要求?
完全满足,甚至还有极大的冗余空间。这个类型的下限是0(比目标区间的最小值1还小),上限则远大于109,所以闭区间1-109内的任何整数都可以安全地存储在unsigned long long int变量中,不会出现范围不足或者溢出的问题。
额外小提示
其实如果只是处理1-10^9这个范围,unsigned int(32位版本最大值为4294967295)甚至32位有符号int(最大值为2147483647)也完全够用,但使用unsigned long long int的好处是后续如果需要扩展数值范围(比如处理更大的数),不需要修改变量类型,兼容性更强。
内容的提问来源于stack exchange,提问作者Melinsuna




