1

重複の可能性:
この C++ コードの意味は何ですか?
「unsigned temp:3」とはどういう意味ですか?

最近、ある小さな C プログラムを見たことがあります。そのプログラムでは、構造がこのように宣言されていて、理解できませんでした。

struct
{
mynode *node;
unsigned vleft :1; 
unsigned vright :1; 
}save[100];

ここで node は、他の構造体へのポインタです。

署名されていない vleft :1;を説明してください。署名されていない vright :1; それは?また、vleft と vright に割り当てられたデータ型が見つかりませんでした。その理由は何ですか?

ありがとう。

4

3 に答える 3

5

ここで想定されるデフォルトの型は ですunsigned int。これは、ちょうど指定したときにコンパイラによって想定されますunsigned

ビットフィールド構文unsigned vleft : 1は、データ フィールドのビット幅を指定します。この状況では、単一ビット フラグであることを意味します (または のいずれ01)。これは、構造体の多くのフィールドをより少ないビットでパックするために使用されます (この場合のように全体を無駄にする必要がない場合、charまたはint単にフラグを格納するため)。

于 2013-01-15T18:19:20.717 に答える
1

vleftvright1ビットのintデータ(0または1)のみを保持できます。

unsiginedの短縮形ですunsigned int。以下は、いくつかのCデータ型の短縮形です。

short = short int = signed short = signed short int
unsigned short = unsigned short int
int = signed int
unsigned = unsigned int
long = long int = signed long = signed long int
unsigned long = unsigned long int
long long = long long int = signed long long = signed long long int
unsigned long = unsigned long int
于 2013-01-15T18:21:36.123 に答える
1

intデータ型は暗示され、部分:1はこれらのメンバーが 1 ビット値のみであることを意味します。

于 2013-01-15T18:18:48.670 に答える