首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在C++中我们使用DWORD而不是unsigned int?

为什么在C++中我们使用DWORD而不是unsigned int?
EN

Stack Overflow用户
提问于 2010-06-08 14:42:43
回答 3查看 172.5K关注 0票数 145

我不怕承认我在某种程度上是一个C++新手,所以这可能看起来是一个愚蠢的问题,但是...

我在代码示例中看到到处都在使用DWORD。当我查找DWORD的真正含义时,它显然只是一个无符号的int (0到4,294,967,295)。所以我的问题是,为什么我们有DWORD?它给了我们什么是整型'unsigned int‘没有的?这与可移植性和机器差异有关吗?

EN

回答 3

Stack Overflow用户

发布于 2010-06-08 15:39:12

当MS-DOS和Windows3.1在16位模式下运行时,Intel8086字是16位,Microsoft WORD是16位,Microsoft DWORD是32位,而典型编译器的无符号整数是16位。

当Windows NT在32位模式下运行时,Intel 80386字是32位,Microsoft WORD是16位,Microsoft DWORD是32位,而典型编译器的无符号整数是32位。WORD和DWORD名称不再是自描述的,但它们保留了Microsoft程序的功能。

当Windows在64位模式下运行时,Intel字是64位,Microsoft字是16位,Microsoft DWORD是32位,典型编译器的无符号整数是32位。名称WORD和DWORD不再是自描述的,无符号int不再符合最小意外原则,但它们保留了许多程序的功能。

我认为WORD或DWORD永远不会改变。

票数 100
EN

Stack Overflow用户

发布于 2010-06-08 14:46:47

SDK开发人员更喜欢使用define定义他们自己的类型。这只允许在一个地方更改基础类型,而无需更改所有客户端代码。遵循这个约定是很重要的。DWORD不太可能被改变,但是像DWORD_PTR这样的类型在不同的平台上是不同的,比如Win32和x64。因此,如果某些函数有DWORD参数,请使用DWORD而不是unsigned int,您代码将在所有未来的windows headers版本中编译。

票数 13
EN

Stack Overflow用户

发布于 2010-06-08 14:47:06

就我自己而言,我假设unsigned int是特定于平台的。整数可以是8位、16位、32位或甚至64位。

另一方面,DWORD指定了它自己的大小,这是双字。字是16位,因此DWORD在所有平台上都称为32位

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2995251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档