64位与32位编程的数据类型区别(C/C++)

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 位的硬件上却完全不一样。

为此M$搞了个所谓的“多态类型”:

对于特定的精度,您可以使用固定精度的数据类型。不管处理器的词大小如何,它们的大小都是一致的。大多数这些类型都在它们的名称中包含精度,可以从下面的表中看出:

表 1. 固定精度的数据类型
类型定义

DWORD32            

32 位无符号整数

DWORD64

64 位无符号整数

INT32

32 位有符号整数

INT64

64 位有符号整数

LONG32

32 位有符号整数

LONG64

64 位有符号整数

UINT32

无符号 INT32

UINT64

无符号 INT64

ULONG32

无符号 LONG32

ULONG64

无符号 LONG64

此外,当您需要数据类型的精度随着处理器词大小变化时,请使用指针精度数据类型。这些类型又称为“多态”数据类型。这些类型通常以 _PTR 后缀结尾,如下面的表格所示:

表 2. 指针精度的数据类型
类型定义

DWORD_PTR              

指针精度的无符号长类型

HALF_PTR

指针大小的一半。用于包含一个指针和两个小型字段的结构中

INT_PTR

指针精度的有符号整型

LONG_PTR

指针精度的有符号长类型

SIZE_T

指针可以引用的最大字节数。用于必须跨指针的整个范围的计数

SSIZE_T

有符号 SIZE_T

UHALF_PTR

无符号 HALF_PTR

UINT_PTR

无符号 INT_PTR

ULONG_PTR

无符号 LONG_PTR

LPARAM

与 LONG_PTR 为同义词,(在WTypes.h 中定义)

WPARAM

与 UINT_PTR 为同义词,(在 WTypes.h 中定义)

通过整数参数传递参数或上下文信息的所有 Win32 API 都更改为使用这些新的类型。

此外,还出现了定长指针:POINTER_32和POINTER_64:

#define POINTER_32 __ptr32

#define POINTER_64 __ptr64

PS:M$DN中说是在Basetsd.h中定义的,但实际上是在WinNT.h中定义的。

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《精通MATLAB与C/C++混合编程第3版》是一本专门介绍如何在MATLAB和C/C++之间进行混合编程的书籍。混合编程是指在MATLAB中调用C/C++代码,以提高程序的效率和性能。 这本书主要包含了以下内容:首先介绍了MATLAB和C/C++的基本知识,如MATLAB脚本语言和C/C++的语法、函数和变量的使用等。然后详细介绍了如何在MATLAB中调用C/C++代码,包括如何编写MEX文件(MATLAB可执行文件),以及如何在MATLAB环境中编译和运行这些文件。此外,还介绍了如何在MATLAB中使用C/C++的库函数和数据结构。 书中还讲解了一些高级的主题,如如何优化MATLAB和C/C++代码的性能、如何处理复杂的数据类型和多线程编程等。此外,还提供了一些实际案例和例子,帮助读者更好地理解和掌握混合编程的技巧和方法。 这本书的优点在于结合了MATLAB和C/C++的实际应用,介绍了大量的实际案例和技巧,对于想要学习如何在MATLAB和C/C++之间进行混合编程的人来说非常有用。无论是初学者还是有一定编程经验的人,都可以通过这本书提高自己的编程水平,提升自己的工作效率。 综上所述,《精通MATLAB与C/C++混合编程第3版》是一本非常实用的书籍,对于想要深入学习和应用MATLAB和C/C++混合编程的人来说是必备的参考资料。它不仅能够帮助读者了解MATLAB和C/C++之间的关系,还可以提升他们的编程水平和解决实际问题的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值