数据范围

原文地址:点击打开链接

了一天的bug竟然是两个int乘积超了int的范围,悲催!!将int转为了__int64吧!!
1.各整型范围:

unsigned   int   0~4294967295   
int   2147483648~2147483647 
unsigned long 0~4294967295
long   2147483648~2147483647
long long的最大值:9223372036854775807 (2^63-1)
long long的最小值:-9223372036854775808   
unsigned long long的最大值:1844674407370955161

__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615

2. __int64
(1)何时需要使用
  long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647,而unsigned范围是[0,2^32),即0~4294967295,所以常规的32位整数只能够处理40亿左右,
遇到比40亿大的多的数就要用到64位
(2)
    警告 在 32 位 Intel 计算机上分配 64 位值不是原子操作;即该操作不是线程安全的。这意味着,如果两个人同时将一个值分配给一个静态 Int64 字段,则该字段的最终值是无法预测的。
(3)
    int64不能用作为循环变量;int64的操作速度较慢。


你可能感兴趣的:(数据范围)