在做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++编译器的扩展。

VCVC6.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的兼容就不是很好了,如果你写下这样一段代码:

1  __int64 a;

2 cin >> a;

3 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 <

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<

scanf("%lld",&a);

printf("%lld",a);

使用无 符号数时,将"%lld"改成"%llu"即可。

最后我补充一点:作为一个特例,如果你使用的是Dev-C++的g++编译器,它使用的 是"%I64d"而非"%lld"。

Linux int64类型,C++ 中_int64的用法相关推荐

  1. linux 脚本map,shell中map的用法

    ##实例代码 #!/bin/bash cat ./switchsql.txt | while read line do tmp_partition_name=`echo $line | awk -F ...

  2. Linux中写入union作用,Linux进程描述符中union的用法

    首先,它是 union thread_union { struct thread_info thread_info; unsigned long stack[THREAD_SIZE/sizeof(lo ...

  3. linux decode函数,Oracle 中 decode 函数用法

    Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似.base_exp与compare1,compare2等等依次进行比较.如果base_exp和 第i 个compare项匹配,就返回第i ...

  4. 64位linux,sizeof(int),C中sizeof()的用法——32位和64位下的sizeof()

    机器平台:X86_64 处理器 操作系统:Red Hat 4.1.2-14 编译器: gcc version 4.1.2 20070626 Size of char is:               ...

  5. int64 java_为什么json 不能使用 int64类型

    json 简介 jsON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Program ...

  6. linux ksh 用户名,实例讲解Linux中ksh的用法

    实例讲解Linux中ksh的用法 发布时间:2008-02-18 20:46:01来源:红联作者:Modegle 熟悉Linux的朋友肯定都知道bash,它是Linux默认的命令行解释程序,熟悉Sol ...

  7. linux中find常见用法

    find命令用于查找指定目录下的文件,同时也可以调用其它命令执行相应的操作** 一.命令格式 find pathname -options [-print -exec -ok -] 二.linux中f ...

  8. Linux中find常见用法示例

    find命令的参数: pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录. -print: find命令将匹配的文件输出到标准输出. -exec: find ...

  9. linux中EOF的用法梳理

    2019独角兽企业重金招聘Python工程师标准>>> linux中EOF的用法梳理 在linux运维工作中,我们会碰到这样一个场景: 执行脚本的时候,需要往一个文件里自动输入N行内 ...

最新文章

  1. Linux内存管理:bufferCache和PageCache
  2. Fabricjs对Canvas画布和对象的事件监听
  3. linux下代码写错了怎么更改_AWS全面上市开源Linux发行版,专为容器操作系统设计...
  4. idea如何连接本地mysql_IDEA如何连接MYSQL
  5. 数据绑定(二)把控件作为Binding源
  6. 中国未来的可能性思考- 系统化思维-公司培训
  7. 分享一款好看的城市选择器
  8. 使用双向链表构建二叉树_LeetCode-109 有序链表转换二叉搜索树
  9. 虚拟机安装系统 小计
  10. 办公技巧:腾讯文档怎么固定表头?
  11. u盘启动盘恢复计算机,怎么还原u盘启动盘为普通u盘?
  12. 用c加加创建c语言项目,如何使用visual studio 2017创建C语言项目
  13. 【编译原理系列】文法、终结符、非终结符、产生式、子集构造法
  14. C#毕业设计——基于C#+asp.net+sqlserver的汽车修理厂物资流通管理系统设计与实现(毕业论文+程序源码)——物资流通管理系统
  15. 接口测试方法论——WebSocket一点通
  16. 【内网安全】WinLinux内存离线读取Hashcat破解RDPSSH存储提取
  17. 【BOOST C++容器专题03】【05】Boost.CircularBuffer
  18. ygomobile卡组下载网站_ygomobile卡组导入攻略来了
  19. 计算机管理没有固态硬盘,电脑的BIOS中没有固态硬盘启动选项怎么办?
  20. CSS 艺术之暗系魔幻卡牌

热门文章

  1. Dockerfile入门教程
  2. R语言(数据读写操作)
  3. android如何终止一个正在运行的子线程
  4. 12本精彩的Linux书籍
  5. 关于el-table添加fixed或fixed=“right“无横向滚动条的解决方法
  6. 统计出现次数最多的整数(
  7. 在html中加下划线
  8. proxmox修改主机名
  9. 如何在短期快速学好英文
  10. 一篇文章带你读懂真正的大数据公司