以下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
はマシン アーキテクチャ ['エンディアンネス'] に依存しますか?
出力はどのように -1 になっていますか?
http://ideone.com/XWbak