__int64

1.各整型范围:

unsigned short                           0~65535
short                                             -32768~32767
unsigned   int                              0~4294967295   
int                                                  -2147483648~2147483647
unsigned long                             0~4294967295
long                                              -2147483648~2147483647
unsigned long long                   1844674407370955161
long long                                      -9223372036854775808~9223372036854775807
unsigned __int64                      0~18446744073709551615
__int64                                        -9223372036854775808~9223372036854775807

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 字段,则该字段的最终值是无法预测的;

int64不能用作为循环变量;

int64的操作速度较慢。

(3)输入输出

I64d 或 lld

I64u或 llu


    __int64 n64;
    unsigned __int64 n64u;
    
    printf("Input a __int64 number:",n64);
    scanf("%I64d",&n64);
    printf("%I64d\n",n64);
    printf("Input an unsigned __int64 number:",n64);
    scanf("%I64u",&n64u);
    printf("%I64u\n",n64u);
    
    printf("Input a __int64 number:",n64);
    scanf("%lld",&n64);
    printf("%lld\n",n64);
    printf("Input an unsigned __int64 number:",n64);
    scanf("%llu",&n64u);
    printf("%llu\n",n64u);
    printf("%llu\n",n64u);


你可能感兴趣的:(__int64)