首先来看一看int、long、long long的取值范围

int                  所占字节数为:4                   表示范围为:-2147483648~2147483647

short int          所占字节数为:2            表示范围为:-32768~+32767

long       所占字节数为:4        表示范围为:-2147483648~2147483647

long long     所占字节数为:8       表示范围为:9223372036854775808~+9223372036854775807

在http://blog.csdn.net/xuexiacm/article/details/8122267 中,博主还专门研究了

c/c++中各种类型int long double char的表示范围(最大最小值)

——————————————————————————————————————————————————————————————————————————

转载自:http://www.cnblogs.com/wainiwann/archive/2012/04/23/2467203.html

注意:__int64是两个短的下划线

在做ACM题时,经常都会遇到一些比较大的整数。而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647。而unsigned范围是[0,2^32),即0~4294967295。也就是说,常规的32位整数只能够处理40亿以下的数。

  那遇到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展了。不同的编译器对64位整数的扩展有所不同。基于ACM的需要,下面仅介绍VC6.0与g++编译器的扩展。
  VC6.0的64位整数分别叫做__int64与unsigned __int64,其范围分别是[-2^63, 2^63)与[0,2^64),即-9223372036854775808~9223372036854775807与0~18446744073709551615(约1800亿亿)。对64位整数的运算与32位整数基本相同,都支持四则运算与位运算等。当进行64位与32位的混合运算时,32位整数会被隐式转换成64位整数。但是,VC的输入输出与__int64的兼容就不是很好了,如果你写下这样一段代码:

 __int64 a;
cin >> a;
cout << a;

那么,在第2行会收到“error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '__int64' (or there is no acceptable conversion)”的错误;在第3行会收到“error C2593: 'operator <<' is ambiguous”的错误。那是不是就不能进行输入输出呢?当然不是,你可以使用C的写法:

scanf("%I64d",&a);
printf("%I64d",a);

就可以正确输入输出了。当使用unsigned __int64时,把"I64d"改为"I64u"就可以了。
  OJ通常使用g++编译器。其64位扩展方式与VC有所不同,它们分别叫做long long 与 unsigned long long。处理规模与除输入输出外的使用方法同上。对于输入输出,它的扩展比VC好。既可以使用

1long long a;
2cin>>a;
3cout<<a;

也可以使用

scanf("%lld",&a);
printf("%lld",a);

使用无符号数时,将"%lld"改成"%llu"即可。
  最后我补充一点:作为一个特例,如果你使用的是Dev-C++的g++编译器,它使用的是"%I64d"而非"%lld"。

——————————————————————————————————————————————————————————————————————————————

最新文章

  1. Vue - 实例
  2. (三)WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心)
  3. WIN7下django1.8下载安装
  4. UWP学习开发笔记记录(开篇)
  5. KNN算法与Kd树
  6. 常用到的Tomcat的修改方法
  7. C# 自定义控件制作和使用实例(winform)
  8. uWSGI
  9. 临时对象与NRV技术
  10. sublime Text3插件无法安装解决方法(提示There are no packages available installation)
  11. Linux回炉复习系列文章大纲
  12. Spring Bean装配
  13. echarts常用方法,legend状态支持两张图片切换(四)
  14. 时间戳time
  15. Java语法基础学习DayTen(集合续)
  16. awk字符串操作(字符串链接、传入传出shell变量)
  17. javascript高级技巧篇(作用域安全、防篡改、惰性载入、节流、自定义事件,拖放)
  18. 20155317《网络对抗》Exp4 恶意代码分析
  19. WBS功能分解及甘特图
  20. 犯罪现场调查第一季/全集CSI迅雷下载

热门文章

  1. Java学习笔记——三层架构
  2. springboot websocket集群(stomp协议)连接时候传递参数
  3. CentOS 7 使用 HP 打印机
  4. Linux系统中sysctl命令详解
  5. Cisco packet tracer6.0下的网络工程实训
  6. c语言:链表
  7. IDEA为新手专业打造
  8. VUE-CLI3.0安装和使用echart方法
  9. Django rest framework(4)----版本
  10. BASE64Encoder及BASE64Decoder的正确用法