c++ - sizeof(T) * CHAR_BIT 是否保证位大小?

标签 c++ size byte bit sizeof

似乎没有任何库函数可以计算类型的位大小。

我认为这可以通过以下方式完成吗?

#include <climits>

template <typename T>
size_t Size_In_Bits(){
    return sizeof(T) * CHAR_BIT;
}

这是否总是会返回可以针对一种类型的位数?

最佳答案

这保证以位为单位为您提供大小(存储),但不是宽度(值位数)。如果类型有填充位,后者可能会更少。对于无符号类型,您可以通过将 -1 转换为类型(以获取类型中的最大可能值)并计算它们来直接测量值位数。对于签名类型,std::numeric_limits<T>::max()可用于获得最大值。或者,如果您已经知道特定类型,则可以使用 xxx_MAX来自 limits.h 的宏或 stdint.h .

关于c++ - sizeof(T) * CHAR_BIT 是否保证位大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35880171/

相关文章:

c++ - 是否可以将构造函数发送到 ros 节点订阅中?

c++ - 函数本地静态互斥锁线程安全吗?

c++ - 这些大小对于变量数组和变量指针数组是否正确?

haskell - 将位转换为 Int8 Haskell

c++ - 为什么我没有正确解析?

c++ - 将编译器开关添加到 Eclipse CDT 内置编译器设置生成?

android - 适用于多种屏幕尺寸/密度的灵活 android 布局

java - 在 Java 中获取 HTTP 响应的大小

c - 从文件中读取标题部分

ios - 显示文件大小 : 1000b = 1kb or 1024b = 1kb?