-4

私は以下のような構造体を持っています

struct A
{
  char x;
  int y;
  short z;
}a;

struct B
{
  char ch;
}b;

struct C
{
  int in;
}c;

struct D
{
  short sho;
}d;

(ax から b.ch)、(ay から c.in)、(az から d.sho) は、ビット単位の操作のみを使用して割り当てる必要があります。

助けていただけますか?

4

2 に答える 2

0

任意の a および x (ビット長が等しい) の場合:

x = ((a & x) | x)
于 2012-08-24T12:27:58.303 に答える
0

それは不可能です。ビット単位の演算子を使用して何かを割り当てることはできず、タスクは意味がありません。(演算子 |= &= などはビット単位の演算子ではなく、代入演算子です。C11 6.5.16 を参照してください。)

a & 0x00FFFFFFFFさらに、コンパイラは構造体内の任意の場所に任意の数のパディング バイトを自由に追加できるため、like のようなコードを記述して、変数 ay をマスクすることを期待しないでください。

于 2012-08-24T12:37:22.663 に答える