-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

这是不可能的,你不能使用按位运算符分配任何东西,你的任务没有任何意义。(运算符 |= &= 等不是按位运算符,它们是赋值运算符,请参阅 C11 6.5.16。)

此外,您不应该编写类似a & 0x00FFFFFFFF并期望屏蔽变量 ay 的代码,因为编译器可以自由地在结构内的任何位置添加任意数量的填充字节。

于 2012-08-24T12:37:22.663 回答
0

对于任何 a 和 x(具有相等的位长):

x = ((a & x) | x)
于 2012-08-24T12:27:58.303 回答