`
afunti
  • 浏览: 104008 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

64 位数据模型 c++、c

阅读更多

 

出处:http://blog.chinaunix.net/u3/110597/showart_2329904.html

转自http://hi.baidu.com/qinpc/blog/item/15c8ac64a10c10f5f736540a.html/cmtid/982c4c36a23153d0a3cc2bb5

int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量用__int16 __int32 __int64吧,或者自己typedef int INT32一下。

C、C++标准中只规定了某种类型的最小字节数(防止溢出)

 

以下来自百度百科:“64位_”http://baike.baidu.com/view/125381.htm

64 位数据模型

以高阶语言编写的应用软件,从 32 位架构转换到 64 位架构的各种困难。一个共同的问题是,部分程序员假定指针如同其它数据型态一样有相同的长度。程序员假定他们可以在数据型态之间传送数量而不遗失信息。这些假定只在一部分 32 位机器上如此(甚至是一部分 16 位机器),不过在 64 位机器上就不再如此。C 语言及其后代 C++ 尤其容易产生这种错误。

C 和 C++ 并未定义指针、整数型(int)、长型(long)为特定的位数目。  
在主要的 32 位机器程序设计环境中,指针、“int”变量、“long”变量全部都是 32 位长。

在 64 位机器下的许多程序设计环境,“int”变量仍然是 32 位宽,不过“long”和指针是 64 位宽,上述内容称为 LP64 数据模型。另一个选择是 ILP64 数据模型,三种数据型态都是 64 位宽,甚至 SILP64 连“short”变量也是 64 位宽。然而,大多数情况下所需的修改是相对次要且简单,而且许多编写良好的程序可以简单的重新编译给新的环境,而无须修改。另一个选择是 LLP64 模型,其维持 32 位代码的兼容性,使 int 和 long 为 32 位。“LL”指“long long”型态,其在所有平台下至少是 64 位,包括 32 位环境。  
今天有许多 64 位编译器使用 LP64 模型(包括 Solaris、AIX、HP、Linux、Mac OS X、IBM z/OS 本地编译器)。微软的 VC++ 编译器使用 LLP64 模型。其缺点是在 LP64 模型中将 long 存放到 int 可能会溢出。另一方面,还会使强制转型一个指针为 long 可以作用;在 LLP 模型下,情况则刚好相反。两者皆不应该出现在合乎 C99 的代码中。

注意,程序设计模型是在预编译器底层选择的,且数个模型可共存于同一操作系统。然而一般由 OS API 选择程序设计模型作为原始模型。

 

64位指的是cpu通用寄存器的数据宽度是64位的。

 

数据类型名称 字节数 别名 取值范围
int * signed,signed int 操作系统决定,即与操作系统的"字长"有关
unsigned int * unsigned 由操作系统决定,即与操作系统的"字长"有关
__int8 1 char,signed char –128 到 127
__int16 2 short,short int,signed short int –32,768 到 32,767
__int32 4 signed,signed int –2,147,483,648 到 2,147,483,647
__int64 8 –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
bool 1 false 或 true
char 1 signed char –128 到 127
unsigned char 1 0 到 255
short 2 short int,signed short int –32,768 到 32,767
unsigned short 2 unsigned short int 0 到 65,535
long 4 long int,signed long int –2,147,483,648 到 2,147,483,647
long long 8 none (but equivalent to __int64) –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long 4 unsigned long int 0 到 4,294,967,295
enum * 由操作系统决定,即与操作系统的"字长"有关
float 4 3.4E +/- 38 (7 digits)
double 8 1.7E +/- 308 (15 digits)
long double 8 1.7E +/- 308 (15 digits)
wchar_t 2 __wchar_t 0 到 65,535
类型标识符 类型说明 长度
(字节)
范围 备注
char 字符型 1 -128 ~ 127 -27 ~ (27 -1)
unsigned char 无符字符型 1 0 ~ 255 0 ~ (28 -1)
short int 短整型 2 -32768 ~ 32767 2-15 ~ (215 - 1)
unsigned short int 无符短整型 2 0 ~ 65535 0 ~ (216 - 1)
int 整型 4 -2147483648 ~ 2147483647 -231 ~ (231 - 1)
unsigned int 无符整型 4 0 ~ 4294967295 0 ~ (232-1)
float 实型(单精度) 4 1.18*10-38 ~ 3.40*1038 7位有效位
double 实型(双精度) 8 2.23*10-308 ~ 1.79*10308 15位有效位
long double 实型(长双精度) 10 3.37*10-4932 ~ 1.18*104932 19位有效位
分享到:
评论

相关推荐

    77G 22套C语言 C++ 数据结构 程序设计视频课程合集 C丨C++相关学习视频全套视频教程

    数据结构与算法_C语言 01.swap.mp4 02.BubbleSort.mp4 03.SelecttionSort.mp4 04.顺序查找.mp4 05.C_DS_折半查找.mp4 06.递归.mp4 07递归算法_折半查找.mp4 08.Permutations.mp4 09.插入排序.mp4 10.快速...

    消费者生产者模型 c++

    #define MAX_THREAD_NUM 64 //定义一个结构,记录在测试文件中指定的每一个线程的参数 struct ThreadInfo { int serial; //线程序列号 char entity; //是P还是C double delay; //线程延迟 int thread_request...

    灰度预测模型C语言源代码

    用C语言的思想(结构化程序设计)编写的,只有申请和释放指针用C++语言,但是改为纯C++也不是很难。由于可以实现了预测功能,也无心修改成C++了,有兴趣的同仁可以自行修改,如有问题,敬请交流,多谢指教

    数据结构课设-基于隐马尔可夫模型实现的地图匹配c++源码(带详细注释).zip

    数据结构课设-基于隐马尔可夫模型实现的地图匹配c++源码(带详细注释).zip数据结构课设-基于隐马尔可夫模型实现的地图匹配c++源码(带详细注释).zip数据结构课设-基于隐马尔可夫模型实现的地图匹配c++源码(带详细注释)...

    基于C++绘制NURBS曲线生成贝塞尔曲线和B样条曲线(源码+说明文档).rar

    1、资源内容:基于C++绘制NURBS曲线生成贝塞尔曲线和B样条曲线(完整源码+说明文档+基础教程+数据).rar 2、代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 3、适用对象:计算机,电子信息...

    新安江模型程序C++代码.docx

    新安江模型C++代码分析 本文将对新安江模型C++代码进行详细的分析,主要从类的声明、变量的定义、函数的实现等方面进行剖析。 类的声明 类XinanjiangModel是新安江模型的核心实现类,该类包含了大量的变量和函数...

    基于C++ libtorch部署YOLOv5(源码+图片+说明文档).rar

    1、资源内容:基于c++ libtorch部署yolov5(完整源码+说明文档+数据).rar 2、代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 3、适用对象:计算机,电子信息工程、数学等专业的大学生课程...

    基于C与C++实现cmdconsole磁力计模型(源码).rar

    资源内容:基于cmdconsole_磁力计模型的c、c++仿真(完整源码+数据).rar 代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 适用对象:工科生、数学专业、算法方向等学习者。 作者介绍:某大厂...

    《深度探索C++对象模型》(Stanley B·Lippman[美] 著,侯捷 译)

    如果你是一位C++程序员,渴望对于底层知识获得一个完整的了解,那么Inside TheC++ Object Model正适合你。 目录: 本立道生(侯捷 译序) 前言(Stanley B.Lippman) 第0章 导读(译者的话) 第1章 关于对象...

    GMM高斯混合模型代码c++版

    高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一类分布但参数不一样,或者是不同...

    数字高程模型(DEM)内插程序c,c++混合版

    根据提供的10个数据点的坐标(Xn,Yn,Zn)和待求点的平面坐标(Xp,Yp),利用移动二次曲面拟合法,由格网点P(Xp,Yp)周围的10个已知点内插出待求格网点P的高程

    基于YOLOv5和onnxruntime C++实现目标检测(源码+说明文档).rar

    1、资源内容:基于yolov5检测onnxruntime c++(完整源码+说明文档+数据).rar 2、代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 3、适用对象:计算机,电子信息工程、数学等专业的大学生课程...

    基于NORAD的SGP4和SDP4轨道预报C++源程序

    1、基于NORAD的SGP4和SDP4轨道预报C++源程序;老外源码,很多公司也有引用。 2、可用于两行数据计算预报卫星位置、速度等,可以计算卫星与地球站之间的仰角。 3、通过实际计算,已验证过,和STK等软件对比,精度...

    深度探索C++对象模型

    深度探索C++对象模型 在C语言中,数据和处理数据的操作是分开来声明的,也就是说,语言本身并没有支持数据和函数之间的关联.我们把这种程序方法称为程序性的,由一组分布在各个以功能为导向的函数中的算法所驱动,它们...

    基于Reactor模型事件驱动C++服务器.zip

    基于Reactor模型事件驱动C++服务器C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程...

    c-c++及数据结构基础视频教程完整版,最适合自学的c++基础

    08_C语言和C++语言的关系_工作经验分享 09_namespace和iotream 10_实用性加强_register增强_检测增强 11_struct关键字类型增强 12_c++类型类型检查加强 13_新增数据类型bool类型14_中午课程回顾 15_c++中的三目...

    C与C++要点框图

    C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以...

    Linux驱动,C,C++

    花了一周时间把收集的资料整理好奉献给大家,希望大家选择性的学习,循循渐进,里面所有链接均可下载,不需要积分,全部高清图书,国内外经典,包括Linux操作系统,C语言,C++语言,QT开发,数据结构,算法等,总有...

    c++网络编程实例.pdf

    本文档提供了 C++ 网络编程的基础知识,涵盖了网络编程的概述、OSI 七层网络模型、TCP/IP 协议和 C/S 编程模型等内容。 网络编程概述 网络编程是指用户使用 MFC 类库在 VC 编译器中编写程序,以实现网络应用。用户...

    吕鑫:【C++语法与数据结构第22天】【第1堂课】初级类工厂模型开发

    1、通过虚函数将通用数据类扩展成为工厂类; 2、展示一个初级类工厂模型开发的开发和改造过程;

Global site tag (gtag.js) - Google Analytics