我试图确定位域中可能的最大值,我做的是:
pip develop
MSVC很好,但GCC 4.9.2给了我一个警告:
using namespace std;
struct A{
unsigned int a:1;
unsigned int b:3;
};
int main()
{
A aa;
aa.b = ~0U;
return 0;
}
想知道如何摆脱它(假设我不知道该字段的位宽,我想知道它中最大可能值是多少)。
答案 0 :(得分:0)
您可以尝试解决此问题,如下所示
aa.b = 1;
aa.b = -aa.b;
请注意,位字段的值表示方面(包括其范围)目前在语言标准中未详细说明,该标准被认为是C ++标准中的缺陷。这很奇怪,特别是考虑到文档的其他部分(例如枚举类型的规范)为了它们自己的目的而试图依赖于可表示的位域值的范围。这应该是taken care of in the future。