所以我有这个联盟叫Junk。它包含一个int或char [4]数组......你可以告诉我我想要做什么。我将字母J,u,n和k的ASCII值放入我的int中,J进入第一个字节,u进入第二个字段,等等。我这样做是因为我的机器是小端,我希望包含J的字节是我的int中最左边的字节,应该与numc [0]对应。但我没有得到任何输出。出了什么问题?
#include <stdio.h>
union Junk {
int num;
char numc[4];
};
int
main(int argc, char ** argv){
union Junk len;
len.num = 74; //J
len.num &= 117 << 8; //u
len.num &= 110 << 16; //n
len.num &= 107 << 24; //k
putchar(len.numc[0]);
putchar(len.numc[1]);
putchar(len.numc[2]);
putchar(len.numc[3]);
putchar('\n');
return 0;
}
答案 0 :(得分:7)
您使用&=
代替|=
来设置位。由于&
的操作数没有重叠位,因此您只需将len
数设置为零。
答案 1 :(得分:2)
你需要OR字节,而不是AND它们。这是一个有效的版本:http://rextester.com/MPS15691