64位计算机上C数据类型,64位与32位编程的数据类型区别(C/C++)

本文详细介绍了C++中的数据类型如char、int、short、long以及浮点型在不同平台上的字长差异,探讨了字节和字长的概念,并指出在32位和64位系统中,数据类型的字长以及指针长度的变化,特别是64位Windows的LLP64模型与32位系统的区别。
摘要由CSDN通过智能技术生成

2、C++ 设计

1.字节和字长 指针

字节,八位就是一个字节,是固定概念。字长是指计算机一次能处理的二进制数据的长度,是一个非固定的概念。例如,8位计算机的字长为8,即一个字节, 32位计算机的字长位32,即4个字节,同理,64位计算机的字长为64,即8字节。 编译器

2.char类型始终是一个字节长,即8位。 it

3.int、short int和long int 编译

一般int为一个字长,short为半个字长,long为一个或2个字长(在32位机器中为一个字长)。 table

4.浮点型float、双精度double、和长双精度long double 程序设计

典型状况下,float 为一个字,double是两个字,long double为三个或四个字。 硬件

C/C++仅仅定义了这些基本数据类型之间的关系,并无定义严格定义它们的字长。在不一样的平台上,根据编译器不一样的实现,它们的字长以下表所示: 数据类型

数据类型 二进制

LP64

ILP64

LLP64

ILP32

LP32

char

8

8

8

8

8

short

16

16

16

16

16

_int32

N/A

32

N/A

N/A

N/A

int

32

64

32

32

16

long

64

64

32

32

32

long long

N/A

N/A

64

N/A

N/A

pointer

64

64

64

32

32

在这张表中,LP64,ILP64,LLP64是64位平台上的字长模型,ILP32和LP32是32位平台上的字长模型。

LP64意思是long和pointer是64位,ILP64指 int,long,pointer是64位,LLP指long long和pointer是32-bit的。ILP32指int,long和pointer是32位的,LP32指long和pointer是32位的。

32位Windows采用的是ILP32数据模型,64位Windows采用的是LLP64数据模型。

因此,Windows上的32位程序设计和64位程序设计最大的不一样(也就是IP32和LLP64的不一样),就在于指针的长度不一样??由32位变成了64位。

Win32 API在不少状况下,都须要将整数转换成指针或者相反。在 32 位的硬件上不会有问题,其中指针的大小和整数的大小是相同的,但在 64 位的硬件上却彻底不同。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值