为什么同一类型的数据单元有不同的名称? 据我所知,在32位编译器的C++中,int =μIt32=长=DWORD。但为什么有这么多?为什么不一个呢

为什么同一类型的数据单元有不同的名称? 据我所知,在32位编译器的C++中,int =μIt32=长=DWORD。但为什么有这么多?为什么不一个呢,c++,types,C++,Types,如果我选择一个名称,int32似乎是最合适的,因为对于它可能是什么没有混淆。这是因为它们代表不同的类型,可以转换为不同的大小 int是默认的“整数”,未指定其大小。 `int32'表示它是32位四字节整数 long是一个“更长版本的整数”,它可以占用大约10个字节。在32位编译器上,它仍然是4字节整数。我记得Windows上的“long-long”类型是64位的。 DWORD是Microsoft引入的类型。这是一个“双字”,在那个时候,这个字的意思是“两个字节” 当您知道需要32位整数时,可以选

如果我选择一个名称,int32似乎是最合适的,因为对于它可能是什么没有混淆。

这是因为它们代表不同的类型,可以转换为不同的大小

int是默认的“整数”,未指定其大小。 `int32'表示它是32位四字节整数 long是一个“更长版本的整数”,它可以占用大约10个字节。在32位编译器上,它仍然是4字节整数。我记得Windows上的“long-long”类型是64位的。 DWORD是Microsoft引入的类型。这是一个“双字”,在那个时候,这个字的意思是“两个字节”
当您知道需要32位整数时,可以选择int32。

这是因为它们代表不同的类型,可以转换为不同的大小

int是默认的“整数”,未指定其大小。 `int32'表示它是32位四字节整数 long是一个“更长版本的整数”,它可以占用大约10个字节。在32位编译器上,它仍然是4字节整数。我记得Windows上的“long-long”类型是64位的。 DWORD是Microsoft引入的类型。这是一个“双字”,在那个时候,这个字的意思是“两个字节” 当您知道需要32位整数时,可以选择int32

int是一种C99之前的类型,保证至少为16位,但在大多数现代体系结构中为32位。它最初是用于本机字大小,但即使在64位体系结构上,它通常仍然是32位,主要是出于向后兼容的原因。
long是C99之前的一种类型,保证至少为32位,但允许更宽。很少有编译器将其延长,即使在64位体系结构上也是如此,这主要是因为向后兼容的原因。 __int32/_uint32_t是一种非标准的typedef,由许多C编译器和运行库实现,以保证C99之前的固定宽度。 int32_t是一种C99类型,保证精确到32位。 DWORD是源于原始Windows API的typedef,从没有语言定义的精确32位类型的日子起,它被保证精确为32位。 因此,基本上,说32位整数的大量方法来自于C如何在标准化固定宽度类型方面步履维艰,以及32位处理器长期占据主导地位,导致每个人都将32位标准化为正常的整数大小

int是一种C99之前的类型,保证至少为16位,但在大多数现代体系结构中为32位。它最初是用于本机字大小,但即使在64位体系结构上,它通常仍然是32位,主要是出于向后兼容的原因。
long是C99之前的一种类型,保证至少为32位,但允许更宽。很少有编译器将其延长,即使在64位体系结构上也是如此,这主要是因为向后兼容的原因。 __int32/_uint32_t是一种非标准的typedef,由许多C编译器和运行库实现,以保证C99之前的固定宽度。 int32_t是一种C99类型,保证精确到32位。 DWORD是源于原始Windows API的typedef,从没有语言定义的精确32位类型的日子起,它被保证精确为32位。
因此,基本上,说32位整数的大量方法来自于C如何在标准化固定宽度类型方面步履蹒跚,以及32位处理器长期占据主导地位,导致每个人都将32位标准化为正常整数大小。

因为传统应用程序。int根本不能描述它有多大。这是一个整数。没什么大不了的

在16位时代,int并不长。德沃德是一个双关语,这很准确。一个字被称为2字节,因此DWORD必须是其中的两个


__intXX是特定于Microsoft的。

因为传统应用程序。int根本不能描述它有多大。这是一个整数。没什么大不了的

在16位时代,int并不长。德沃德是一个双关语,这很准确。一个字被称为2字节,因此DWORD必须是其中的两个


__intXX是Microsoft特有的。

因此,不同的项目(如Microsoft Windows)使用不同类型的原因有很多

今天的编译器通常是32位的,但情况并非总是如此。还有64位的编译器

术语DWORD起源于Windows是16位分段模式应用程序的时候,这里的许多成员可能从未在16位分段模式环境中工作过。它是两个16位字,至少现在被视为一个无符号32位值

类型是通过C标准文档和继承,也在C++中定义的。只有当它实际上是e时,它才被保证存在 确切地说是32位。在具有36位字的机器上,没有int32_t,但有一个int32_least_t,它应该存在于所有支持至少32位的系统上

long在Windows 32位或64位编译器中为32位,但在Linux 64位编译器中为64位,在Linux 32位编译器中为32位。所以它的大小肯定是可变的


为类型选择自己的名称通常也是一个好主意。这是假设你真的在乎——使用int、long等也可以,只要你不依赖它们的大小——fori=0;i<10;i++x+=i;将使用i和x作为任何整数类型-总和甚至低于128,因此char可以工作。在这里使用int可以,因为它可能是一种快速类型。在某些体系结构中,使用long可能会使代码速度变慢,尤其是在16位体系结构中,long占用两个16位字,需要使用两个或更多的加法和减法运算来处理。这确实会降低敏感位置的代码速度。

因此,不同项目(如Microsoft Windows)使用不同类型的代码有很多不同的原因

今天的编译器通常是32位的,但情况并非总是如此。还有64位的编译器

术语DWORD起源于Windows是16位分段模式应用程序的时候,这里的许多成员可能从未在16位分段模式环境中工作过。它是两个16位字,至少现在被视为一个无符号32位值

类型是通过C标准文档和继承,也在C++中定义的。只有当它实际上正好是32位时,才能保证它存在。在具有36位字的机器上,没有int32_t,但有一个int32_least_t,它应该存在于所有支持至少32位的系统上

long在Windows 32位或64位编译器中为32位,但在Linux 64位编译器中为64位,在Linux 32位编译器中为32位。所以它的大小肯定是可变的


为类型选择自己的名称通常也是一个好主意。这是假设你真的在乎——使用int、long等也可以,只要你不依赖它们的大小——fori=0;i<10;i++x+=i;将使用i和x作为任何整数类型-总和甚至低于128,因此char可以工作。在这里使用int可以,因为它可能是一种快速类型。在某些体系结构中,使用long可能会使代码速度变慢,尤其是在16位体系结构中,long占用两个16位字,需要使用两个或更多的加法和减法运算来处理。这确实会降低敏感区域的代码速度。

有这么多什么?还有什么是DWORD?@Jeffrey,可能是MS特有的宏。。。基本上是2条短裤。顺便说一句,int32不是标准型。它是VS型的。@SteveJessop,是的,正如我的回答所提到的:使用cstdint获得保证尺寸。有那么多什么?还有什么是DWORD?@Jeffrey,可能是MS特有的宏。。。基本上是2个短字符。顺便说一句,int32不是标准类型。它是VS类型。@SteveJessop,是的,正如我的回答所提到的:使用cstdint获得保证大小。在32位编译器上是8字节整数。-通常不在C++中,32位平台通常具有32位长。我不相信提问者的编译器,它似乎是为Windows设计的。@SteveJessop-你可能是对的。很长时间没有在32位环境中完成。我记得过渡到64位时,long仍然是32位,然后戴尔推出了“True64”版本,long变成了64位,与“long-long”相同。我正在更正我的帖子。在你的32位编译器上是8字节整数。-通常不在C++中,32位平台通常具有32位长。我不相信提问者的编译器,它似乎是为Windows设计的。@SteveJessop-你可能是对的。很长时间没有在32位环境中完成。我记得过渡到64位时,long仍然是32位,然后戴尔推出了“True64”版本,long变成了64位,与“long-long”相同。我正在修改我的帖子。有趣,历史!我想在某一天,x大小变量是一个特殊的特性。很少有编译器将其加长,即使在64位体系结构上也是如此,这主要是因为向后兼容的原因仅适用于Windows,AFAIK。在UNIX上,64位长的LP64是标准。有趣的是,历史!我想在某一天,x大小变量是一个特殊的特性。很少有编译器将其加长,即使在64位体系结构上也是如此,这主要是因为向后兼容的原因仅适用于Windows,AFAIK。在UNIX上,64位长的LP64是标准配置。