如何编写64位应用程序

如何编写64位应用程序,第1张

64位程序是指在64位 *** 作系统的编写的程序,根使用什么键枝语言没有太多的关系,有些数据类型的位数可能有变化。

64位 *** 作系统是指特别猜携为64位架构计算机系统而穗亮伏设计的 *** 作系统。“位”,简单地理解就是CPU的寻址空间,实际上包括整个计算机系统架构数据处理位数。

用 Visual C++ 创建在 64 位 Windows *** 作系统中运行的应用程序时,应注意以下问题:

在 64 位 Windows *** 作系统中,int 和 long 是 32 位值。

在 64 位 Windows *** 作系统中,size_t、time_t 和 ptrdiff_t 是 64 位值。

在 32 位 Windows *** 作系统中,time_t 是 32 位值。

应注意代码在哪里采用 int 值和将其作为 size_t 值或 time_t 值处理。数字有可能增长得比 32 位数大,并且数据在被传递回 int 存储时有可能被截断。

%x(十六进制 int 格式)printf 修饰符在 64 位 Windows *** 作系统中不按预期的那样工作;它只对传递给它的值的前 32 位进行 *** 作。

Windows 32 位 *** 作系统使用 %I32x 显示整数

Windows 64 位 *** 作系统使用 %I64x 显示整数。

%p(指针的十六进制格式)在 64 位 Windows *** 作系统中按预期的那样工作。

1、ANSI C99标准中并没有64位整数类型。但是,许多实际的编译器,都实现了对64位整数类型的支持。因为没有这方面的标准,所以具体的语法描述方式略有不同,一般Windows平台,用__int64的关键字,而Linux平台则使用long long的樱拍蠢描述方法。

2、有人做了测试,如下图所示:

综合上图可以得出如下几点:

a:long long定义方式可以用于贺悉gcc/g++,不受平台限制,但脊陪不能用于VC6.0。

b:__int64是Win32平台编译器64位长整型的定义方式,不能用于Linux。

c:“%lld”用于Linux i386平台编译器,”%I64d”用于Win32平台编译器。

d:cout只能用于C++编译,在VC6.0中,cout不支持64位长整型。

3、如果要使用64位的整数,尽量使用最新的编译器,Windows平台,尽量使用VS的较新版本,Linux平台,建议将gcc/g++升级到最新版本。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8257658.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存