为什么这不输出'Junk'?

Bro*_*eph -3 c

所以我有这个联盟叫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;
}
Run Code Online (Sandbox Code Playgroud)

nne*_*neo 7

您使用&=而不是|=设置位.因为操作数&没有重叠位,所以只需将len数字设置为零即可.