自定义int大小,而不使用<stdint.h>

陶马豪斯

如何获得自定义大小的整数数据类型?除了使用<stdint.h>uint16_tuint32_t这样的类型之外,还有其他答案吗?这些类型是否与平台无关?

镍铁

答案大多是否<stdint.h>提供给定平台上可用的特定大小的整数,但是没有标准的方法来获取20位整数,但是您可以指定小于<stdint.h>使用位域提供的大小的任意大小下面提供了一个20位unsigned int,尽管接口有点笨拙,但它可以按您期望的那样工作。

struct uint20_s {
   unsigned int val : 20;
};

广义上讲,对于大于基本硬件支持的字长的字长实现整数语义是很重要的。一整类的库致力于处理任意精度的数字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

<cstdint>与<stdint.h>

为什么在Windows stdint.h中未正确定义UINTX_C()宏?

为什么“ stdint.h”的实现在UINT8_C的定义上存在分歧?

何时在驱动程序代码中使用stdint.h的标量

Xcode stdint.h #error仅当使用MSVC编译时才应包含此文件

stdint.h和C99

stdint.h与C ++不兼容?

为什么主流编译器将stdint.h使用typedef而不将stdbool.h使用#define?

是否有理由在<stdint.h> / <inttypes.h>的int64_t上使用<cstdint> / <cinttypes>的std :: int64_t?

有人可以解释使用<stdint.h>库中的uint32_t的重要性吗?

我应该在32/64位计算机上使用stdint.h整数类型吗?

在用户程序中使用<linux / types.h>,或在驱动程序模块代码中使用<stdint.h>……有关系吗?

编译期间如何转换<stdint.h>中的标准整数?

在高山docker映像中找不到stdint.h

<stdint.h>类型如何保证位宽?

stdint.h 的类型转换和整数提升如何工作?

Cs 默認 int 類型和 <stdint.h> 的 intXX_t 類型之間的轉換如何工作?

Android Studio 3.0.1 NDK致命错误:stdint.h:没有这样的文件或目录

QtEndian的stdint.h与冲突数据类型quint16_be

编译错误:“stdint.h:没有那个文件或目录”

如何在Visual Studio 2013中对_tprintf使用stdint类型?

POSIX在stdint.h中的“二进制补码表示形式”是什么意思?

Mac OS X上的NDK构建错误:“严重错误:stdint.h:没有这样的文件或目录”

顶点致命错误C1083:无法打开包含文件:'stdint.h':没有这样的文件或目录

使用 CMake 的自定义 .h 和 cpp 的未定义符号

C stdint类型的预声明

使用Spring从自定义SQL加载H2源数据

使用其他组件自定义h:selectOneRadio的布局和标签

使用syslog.h将自定义时间戳记写入syslog