如何强制长整型为 4 字节
How to force long to be 4 byte
>我有一个问题。当我编译我的项目时,我有sizof(long int) = 8
和sizof(int) = 4
。但是,我也需要sizeof(long int)
4 岁。有没有办法做到这一点?问题是我有很多巨大的 int 数组,需要将它们分配给长 int 数组。如果我强制转换所有数组(具体来说,这意味着转换数组的每个条目),这将导致很多时间。
您不能在 LP64 平台(或陌生平台)上强制内置long int
类型为 4 字节长。
但是,您可以使用 <stdint.h>
中的类型来保证变量的确切大小。
在您的情况下,您需要int32_t
或uint32_t
作为您的类型,具体取决于您是否需要/想要符号位。
您可以告诉编译器您的目标平台,或者使用编译器特定的命令告诉编译器变量的大小。
另一种方法是使用宏并根据您的平台定义它:
#if PLATFORM_USES_8_BYTE_LONG
#define MY_LONG_INT int32_t
#else
#define MY_LONG_INT long int
#endif
首选方法是为目标体系结构设置编译器。 许多编译器都有大量预定义的体系结构可供选择。
相关文章:
- C 字符串返回字符串的整数/双精度/长整型值
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- JNI 日期值转换问题,在C++中获取不同的长整型值
- 将长整型值打印为带有前导零的十六进制
- 为什么在传递长整型时调用具有两个双精度类型的参数的重载函数?
- 提升不良词法强制转换:将字符串转换为无符号长整型时,无法将源类型值解释为目标
- 将最小值整数转换为无符号长整型
- 如何将小端格式的QByteArray转换为无符号长整型
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?
- 环礁和(长整型)的区别?
- 将逗号格式化为长整型整数
- 如何将长整型传递给 itoa 函数?
- 是否存在将长整型转换为指针有效的情况
- 在 C++ 中创建一对长整型和矢量时出现编译错误
- 当我使用长整型时,我的代码不起作用,它与 int 一起工作得很好
- 将字符串中以十六进制形式存储的负长整型值转换为 C++ 中的长整型变量
- 为什么当我们把变量"u"的数据类型从长整型更改为整型时,模幂会出错?
- 如何将字节数组转换为整数类型(整数、长整型、短型等)"安眠安"?
- 如何强制长整型为 4 字节
- 为什么在32位系统上std::size_t是4字节,而在32位和64位系统上无符号长整型都是8字节