Consigne :每个整数都在1 - 10 9 的范围内。
我使用unsigned long long int
对于规定的范围是否足够?
答案 0 :(得分:5)
是的(假设您使用符号10^9
表示1e9
- ^
是C中的XOR运算符,10^9
是{{1} })。
3
必须能够存储0到2之间的数字 64 - 1.你的最大值远小于此值。
另请注意,unsigned long long
必须能够存储0到2之间的数字 32 - 1.您的最大值也小于此值。
答案 1 :(得分:5)
10 ^ 9小于2 ^ 32
所以在你的情况下,不需要使用unsigned long long
(它适合,是),这是过度杀伤并且可能导致操作变慢。
使用stdint.h
中规范化的正确类型:uint32_t
或uint_least32_t
(uint32_t vs uint_fast32_t vs uint_least32_t)
long
也保证为at least 32 bits,所以这是一个很好的&简单的选择。
答案 2 :(得分:1)
长整数无符号整数类型。至少包含[0,+ 18,446,744,073,709,551,615]范围; 自C99版本标准以来指定。
答案 3 :(得分:0)
答案是肯定的,但您不需要unsigned long long
,unsigned long
就够了。
32位数字可以代表超过4 * 10 ^ 9。最多4 294 967 296。