如何使用按位运算将struct值分配给其他struct值?

时间:2012-08-24 12:23:32

标签: c struct bit-manipulation

我有一个结构如下

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

struct B
{
  char ch;
}b;

struct C
{
  int in;
}c;

struct D
{
  short sho;
}d;

我必须通过使用按位操作来分配(a.x到b.ch),(a.y到c.in),(a.z到d.sho)。

你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

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

x = ((a & x) | x)

答案 1 :(得分:0)

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

此外,您不应该编写像a & 0x00FFFFFFFF这样的代码并期望掩盖变量a.y,因为编译器可以在结构内的任何位置随意添加任意数量的填充字节。