我有一个结构如下
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)。
你能帮忙吗?
答案 0 :(得分:0)
对于任何a和x(具有相等的位长度):
x = ((a & x) | x)
答案 1 :(得分:0)
这是不可能的,你不能使用按位运算符分配任何东西,你的任务没有任何意义。 (运算符| =& = etc不是按位运算符,它们是赋值运算符,参见C11 6.5.16。)
此外,您不应该编写像a & 0x00FFFFFFFF
这样的代码并期望掩盖变量a.y,因为编译器可以在结构内的任何位置随意添加任意数量的填充字节。