以下对我来说Note
似乎是ambiguous
[在一本 C++ 书中找到]。
可以声明一个未命名Bit-Field
的来创建填充以实现特定的对象布局。
作者想从上面的注释中传达什么?
我尝试了以下程序来理解但仍然不清楚。
class s
{
public:
unsigned i:1;
};
int main()
{
s x;
x.i=1;
cout<<x.i<<endl; //outputs 1
return 0;
}
程序如何在不发出任何警告或错误的情况下完美运行?
我正在使用 ideone[ C++ (gcc-4.3.4)
]:http: //ideone.com/bLLz4
但是,如果我unsigned
从声明中删除,它会给出错误:
prog.cpp:7: error: ISO C++ forbids declaration of ‘i’ with no type
另一个问题
class s
{
public:
int i:1;
};
int main()
{
s x;
x.i=1;
cout<<x.i<<endl; //outputs -1
return 0;
}
输出是否-1
取决于机器架构['Endianness']?
输出如何-1?
http://ideone.com/XWbak