我运行的游戏服务器编码为C++,那里也有一些ASM和C。我看到有人更新了我运行的同一服务器,并且在所有更新中,事实是所有int,unsigned,short以及其他所有内容都更改为int32_t,uint32_t,uint64_t和其他内容。

将它们全部更改为上述内容是否有好处?可以说我将所有int更改为int32_t,将所有未签名的int更改为uint32_t,当然其他所有可能更改的内容也都更改了。

我试图阅读并理解是否有任何好处,但是我只是没有理解它们的真正含义。是的,问题来了:做我刚才说的话有没有好处?

我使用的编译器是Orwell Dev-C++

最佳答案

普通类型(如intunsigned int)的大小取决于运行的平台。但是,在任何具有32位整数类型的平台上,int32_tuint32_t保证为32位。在没有的平台上,它不存在。 int的大小可能有所不同,通常为32或64位长。相同的规则适用于其他类型,例如int64_t是64位。

例如,在网络编程中需要知道数据类型的大小,因为网络数据包是在具有不同默认整数大小的不同平台之间发送的,而数据包中存储的数据大小(例如地址和端口号)始终相同。一个IPv4地址的长度始终为32位,应使用一种保证该大小的数据类型来存储它。

在大多数只存储数字的程序中,应使用常规类型。这些文件的大小是当前平台上最有效的。

07-24 09:44
查看更多