常用的整数类型范围:
long 和 int 类型表示 [-2^31 , 2^31 ) , 即 2147483648 ~ 2147483647
unsigned 类型表示 [ 0 , 2^32 ),即 0 ~ 4294967295
对于更大的数,可以使用C++的64位扩展,但是不同的编译器对64位扩展不同
VC6.0的64位整数叫做__int64、unsigned __int64,其范围分别是 [ -2^63 , 2^63 ) 与 [ 0 , 2^64 ),即-9223372036854775808~9223372036854775807与0~18446744073709551615(约1800亿亿)。对64位整数的运算与32位整数基本相同,都支持四则运算与位运算等。在接受输入输出的时候,一般使用C语言的方法:
scanf ( "%I64d" , &a ) ;
printf( "%I64d" , a) ;
OJ 通常使用G++编译器,扩展方式与VC不同,分别叫做long long 和unsigned long long,规模同上,对于输入输出可以使用cin和cout,也可以使用scanf和printf,例如:
scanf("%lld",&a);
printf("%lld",a);
特例:Dev-C++的g++编译器,使用的是"%I64d"而非"%lld"
所以long long 和 _int64只是编译器不同,一个是VC编译器,一个是G++编译器,所以在百练上提交程序的时候,使用_int64会出现编译错误,改成long long就好了。