私は以下のような構造体を持っています
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) は、ビット単位の操作のみを使用して割り当てる必要があります。
助けていただけますか?
私は以下のような構造体を持っています
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) は、ビット単位の操作のみを使用して割り当てる必要があります。
助けていただけますか?
任意の a および x (ビット長が等しい) の場合:
x = ((a & x) | x)
それは不可能です。ビット単位の演算子を使用して何かを割り当てることはできず、タスクは意味がありません。(演算子 |= &= などはビット単位の演算子ではなく、代入演算子です。C11 6.5.16 を参照してください。)
a & 0x00FFFFFFFF
さらに、コンパイラは構造体内の任意の場所に任意の数のパディング バイトを自由に追加できるため、like のようなコードを記述して、変数 ay をマスクすることを期待しないでください。