`
afunti
  • 浏览: 105448 次
  • 性别: 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位有效位
分享到:
评论

相关推荐

    AR模型的c++程序

    在C++编程环境下实现AR模型,可以为数据分析和信号处理等领域提供强大的工具。 AR模型的核心是通过当前值与过去若干期的值的线性组合来预测未来的值。其数学表达式一般写作: Y_t = c + φ_1Y_{t-1} + φ_2Y_{t-2}...

    AR模型的c++程序,c++array,C/C++

    在C++编程语言中实现AR模型,可以为数据分析和科学计算提供强大的工具。本程序旨在利用C++实现AR模型,并进行频谱分析,帮助我们理解和解析复杂的动态系统。 AR模型的基本形式是: Yt = φ1Yt-1 + φ2Yt-2 + ... + ...

    MATLAB Support for MinGW-w64 C/C++/Fortran Compiler

    标题“MATLAB Support for MinGW-w64 C/C++/Fortran Compiler”涉及的主要知识点是MATLAB编程环境与MinGW-w64编译器的集成,以及对C、C++和Fortran语言的支持。 MATLAB是一款强大的数学计算软件,广泛用于科学计算...

    MinGW-w64 C/C++编译器+libsvm安装包.rar

    MinGW-w64是GCC(GNU Compiler Collection)在Windows平台上的一个移植版本,它为64位和32位的Windows系统提供了原生的编译环境。这个编译器套件包括了C、C++、Fortran等语言的编译器,支持多种编程语言的开发。...

    netcdf 4.4.1 c/c++类库windows64位绿色版

    NetCDF(Network Common Data Form)是一种开放源代码的...总的来说,这个NetCDF 4.4.1 C/C++类库提供了在Windows 64位环境下进行科学数据处理所需的所有关键组件,无论是创建、读取还是操作NetCDF文件,都十分便利。

    C/C++语言实现串口(USB)的数据收发

    在IT领域,尤其是在嵌入式系统或物联网应用中,C/C++语言经常被用来实现串口(Serial Port)或USB接口的数据收发功能。串口通信是一种基础的、通用的设备间通信方式,而USB(Universal Serial Bus)则提供了一种更...

    java jna 调用pytorch c++模型推理

    Java JNA调用PyTorch C++模型推理是一种在Java应用程序中利用PyTorch的深度学习能力的方法。JNA(Java Native Access)是Java平台上的一个库,它允许Java代码直接调用本机库(如C++编写的库),而无需编写JNI(Java ...

    MinGW64 C++ 版本6.3

    MinGW64是 Minimalist GNU for Windows 的64位版本,它是一个集合了GNU编译器工具链的软件包,用于在Windows操作系统上构建和编译C和C++程序。这个版本是6.3,意味着它包含了GCC(GNU Compiler Collection)的6.3...

    直线电机simulink建的模型,simulink直流电机模型,C,C++

    描述中提到的是一个博士毕业设计项目,该项目利用Simulink构建了直流电机模型,同时提及C和C++编程语言。这表明该模型可能涉及到底层控制算法的开发,而C和C++是常用于编写高效实时控制代码的语言。通过这个项目,...

    C++实现生产与消费者模型

    在这个模型中,"生产者"线程负责生成数据,而"消费者"线程则负责处理这些数据。C++作为一门支持多线程编程的语言,可以通过标准库中的线程、互斥量等工具来实现这一模型。 1. **线程与并发** 在多线程环境中,多个...

    深度探索C++对象模型 PDF中文清晰版

    《深度探索C++对象模型》是一本面向有C语言基础的读者,旨在深入解析C++这一强大编程语言中关于对象模型的专著。C++作为面向对象编程的典范,其对象模型是理解语言特性和底层机制的关键。这本书的中文清晰版提供了一...

    深度探索C++对象模型笔记.pdf

    C++的标准模型中,基类的数据成员直接放置在派生类对象中,这提高了访问效率,但也意味着每当基类数据成员发生变化时,派生类都需要重新编译。为了解决这一问题,引入了虚拟基类的概念,允许通过间接的方式来表示...

    c++调用yolov3训练模型.zip

    2. **构建C++接口**:Darknet库提供了一个C API,使得我们可以用C++或者其他语言与模型进行交互。在代码中,我们需要包含必要的头文件,如`darknet.h`,并编写函数来执行预测。例如,创建一个函数接收输入图像,调用...

    C++ 物件模型 中文版

    C++是一种强类型、静态类型的面向对象编程语言,它在C的基础上增加了类、模板、命名空间等特性,形成了其独特的物件模型。以下是对C++物件模型的一些关键知识点的详细解释: 1. **类(Class)**:C++中的类是定义...

    c++写的一个CIM模型解析程序

    CIM模型,全称为Common Information Model,是一种广泛用于电力系统和其他工业领域的标准化数据模型。它定义了一套统一的、抽象的、独立于具体系统的概念,用于描述和交换各种设备、网络和系统的运行状态、配置信息...

    ARMA.rar_ARMA模型 C++_c arma_c++ arma模型_visual c

    总结来说,ARMA模型是分析时间序列数据的重要工具,而C++结合Armadillo库提供了强大的计算能力来实现这些模型。在Visual C++这样的IDE中,你可以编写、调试代码,最终实现对ARMA模型的构建和应用。

    c++实现的ARMA(1,1)建模

    ### C++实现的ARMA(1,1)建模详解 ...然而,值得注意的是,模型的有效性和预测精度往往取决于数据的质量以及模型参数的准确性,因此,在实际应用中,应根据具体问题调整模型参数,确保模型的适用性。

    ar_model.rar_AR C++_AR模型 C++_AR模型参数_ar模型输入

    本压缩包"ar_model.rar"包含了关于AR模型C++实现的相关资料,特别是针对AR模型的系数计算以及输入参数的处理。 AR模型的基本形式是: \[ X_t = c + \phi_1X_{t-1} + \phi_2X_{t-2} + ... + \phi_pX_{t-p} + \var...

Global site tag (gtag.js) - Google Analytics