获取char中的位数

mkl*_*uwe 8 c++

如何获取类型中的位数char

我知道CHAR_BITclimits.这被描述为»宏产生用于表示char类型对象的位数的最大值.«在Dikumware的C Reference中.我明白这意味着a中的位数char,不是吗?

我能以std::numeric_limits某种方式获得相同的结果吗?std::numeric_limits<char>::digits返回7正确但不幸的是,因为此值尊重此位的8位字符的签名...

AnT*_*AnT 14

CHAR_BIT根据定义,是对象表示类型中的位数[signed/unsigned] char.

numeric_limits<>::digits是给定类型的值表示中的非符号位数.

你需要哪一个?

如果你正在寻找对象表示中的位数,那么正确的方法是取sizeof类型并乘以它CHAR_BIT(当然,sizeof在特定的char类型情况下乘以没有意义,因为它们的大小总是1 ,CHAR_BIT根据定义,alredy包含你需要的东西).

如果你在谈论价值表征,那么numeric_limits<>就是要走的路.

对于unsigned char类型,对象表示(CHAR_BIT)的位大小保证与值表示的位大小相同,因此您可以使用numeric_limits<unsigned char>::digits并且CHAR_BIT可以互换,但从概念的角度来看,这可能是有问题的.


R S*_*hko 10

如果您想过于具体,可以这样做:

sizeof(char) * CHAR_BIT
Run Code Online (Sandbox Code Playgroud)

如果你知道你肯定会做sizeof char,那就有点矫枉过正,因为sizeof(char)保证是1.

但是如果你转移到另一种类型,如wchar_t,这将是重要的.