VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 21520|回复: 98

[交流] 整理C/C++中的64位整型

  [复制链接]
001
51_avatar_middle
online_admins 发表于 2017-8-10 15:07:05 | 显示全部楼层 |阅读模式
最近给大家录制讲解C++基础方面的教程,刚讲到数据类型这块。地址如下:https://www.cctry.com/thread-277142-1-1.html

关于基本类型中的整型,默认的一些 short、int、long 等大家都比较熟悉。int、long 占用 4 个字节32位,最大能表示的无符号正整数也才是 4294967295,也就是 42亿多。现如今社会中各种各样的数量需要整型来表示,但数目已远远超过 4294967295,比如当今的世界人口,等等。比如开发过程中经常要用到的毫秒级时间戳,即代表从1970年到现在为止经过的毫秒数。这些数值都超过了 4294967295,普通的 int 和 long 已经无法表示的下了,所以又出现占用 8个字节的64位整型:long long、_int64、__int64,其无符号能表示的最大正整数是:18446744073709551615,已经非常大了。。。可为什么有三种?下面给大家说下!

C99标准以前:
64位整型是一种没有明确规范的数据类型,各种主流的编译器对64位整型的支持也是标准不一,形态各异。于是便出了 long long、_int64、__int64 这么几种;

C99标准推出:
C99将 long long 纳入到 C++标准中,并规定 long long 类型的位数不低于64位;
Linux上GCC从4.5版本开始,完全支持C99标准,因此可以使用 long long 表示64位整数;
Windows 下 VC6.0 是1998年推出的,所以不支持C99标准,但是Windows为了支持64位整型,自己提供了__int64 类型来表示64位整数,VC6.0中还可以使用少一个下划线的版本 _int64

C++11标准推出:
long long 进入了 C++11 标准,同样定义为位数不低于64位;
GCC4.8开始支持 C++11,将 long long 型定义为64位,Visual Studio 2013 开始支持 C++11,同样将 long long 定义为64位。

备注:不过微软为了支持以前的程序代码,所以在 VC6.0 以及以后的编译器中都支持 _int64 及 __int64 类型。

好了,8个字节64位的整型我们搞清楚了之后,那么在进行打印输出或者格式化字符串的时候,用 % 什么呢?普通的 %d 肯定是不行了,应该用什么呢?
【回复后可见】
游客,如果您要查看本帖隐藏内容请回复


OK了,基本就给大家讲完了。为了通用性和移植性,建议大家还是使用 long long 类型吧,不过如果大家手头还是古董级别的 VC6.0 或者 低于支持 C++11 标准版本的编译器:VS2002、VS2003、VS2005、VS2008、VS2010、VS2012,那么只能使用 __int64 了。

有的网友会说了,long long 太长了,unsigned long long 更长,还是不如 __int64 方便!其他网友要说了,你直接 typedef 一下不就得了就可以使用短名字了:

  1. typedef signed long long                TSint64;
  2. typedef unsigned long long                TUint64;
复制代码


这样定义完之后可以直接使用 TSint64 和 TUint64 了。

以上!

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
61_avatar_small 轩墨 + 2 + 2 支持原创!

查看全部评分





上一篇:不错的C++学习参考网站分享!
下一篇:C++中 printf 和 cout 的区别
49_avatar_middle
online_vip 发表于 2017-8-10 15:12:01 | 显示全部楼层
谢谢分享,~学习啦
46_avatar_middle
online_vip 发表于 2017-8-10 15:16:12 | 显示全部楼层
谢谢分享,~学习啦
92_avatar_middle
online_vip 发表于 2017-8-10 15:18:31 | 显示全部楼层
王王王王
70_avatar_middle
online_vip 发表于 2017-8-10 15:20:07 | 显示全部楼层
多谢 老大分享           
84_avatar_middle
在线会员 发表于 2017-8-10 15:26:38 | 显示全部楼层
感谢老大分享,老大辛苦了。。
89_avatar_middle
在线会员 发表于 2017-8-10 15:28:02 | 显示全部楼层
这个可以,基础知识必须得扎实...
75_avatar_middle
online_vip 发表于 2017-8-10 15:39:10 | 显示全部楼层
这样讲一下  就懂了,谢谢老大,老大一直在默默的付出
31_avatar_middle
在线会员 发表于 2017-8-10 17:01:16 | 显示全部楼层
我要好好学习,天天向上。
72_avatar_middle
online_vip 发表于 2017-8-10 17:10:26 | 显示全部楼层
看看这里是什么内容
88_avatar_middle
online_vip 发表于 2017-8-10 18:52:44 | 显示全部楼层
谢谢版本分享。。。
06_avatar_middle
在线会员 发表于 2017-8-11 09:41:55 | 显示全部楼层
谢谢分享,~学习啦
60_avatar_middle
online_vip 发表于 2017-8-11 10:02:52 | 显示全部楼层
学习一下
27_avatar_middle
在线会员 发表于 2017-8-11 20:57:59 | 显示全部楼层
好久没有来看过了,我也来看看哈,嘿嘿
75_avatar_middle
在线会员 发表于 2017-8-11 22:28:02 | 显示全部楼层

谢谢分享,~学习啦
61_avatar_middle
donate_vip 发表于 2017-8-13 13:38:24 来自手机 | 显示全部楼层
感谢分享
94_avatar_middle
online_vip 发表于 2017-8-13 16:08:58 | 显示全部楼层
谢谢老大分享
61_avatar_middle
在线会员 发表于 2017-8-14 17:35:19 | 显示全部楼层
能下载不~
38_avatar_middle
online_vip 发表于 2017-8-15 21:25:37 | 显示全部楼层
精华。。。。。。。。。。
18_avatar_middle
在线会员 发表于 2017-8-16 13:04:55 | 显示全部楼层
看答案凑凑够八个字
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-10-15 13:06

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表