C语言中的位运算符赋值

C语言中的位运算符赋值,c,bit-manipulation,operator-keyword,C,Bit Manipulation,Operator Keyword,我试图使用位运算符,当我的程序达到这一点时就会崩溃。它看起来像这样: short x = 1; short insert = x << (some_number - 1); /*some_number is always > 0*/ array[y][z] &= insert; short x=1; 短插入=x 0*/ 数组[y][z]&=insert; 这是使用这些操作符的最佳方式吗?错误可能来自哪里 array[y][z]也是一个短数组,y和z在指定的0和8

我试图使用位运算符,当我的程序达到这一点时就会崩溃。它看起来像这样:

short x = 1;

short insert = x << (some_number - 1);
/*some_number is always > 0*/

array[y][z] &= insert;
short x=1;
短插入=x 0*/
数组[y][z]&=insert;
这是使用这些操作符的最佳方式吗?错误可能来自哪里


array[y][z]
也是一个短数组,
y
z
在指定的0和8之间
某些\u数
不能超过9,以免超出短整数的位范围。其思想是根据
某些\u数
的值将位插入到某个位置。崩溃不是按位运算符的错误。问题就在这里
数组[y][z]
。检查
y
z
的值。并显示如何声明数组。首先使用调试器定位崩溃(崩溃发生时调试器将停止)。然后进入代码的调用堆栈(如果调试器还没有),检查发生崩溃的表达式/语句,特别是检查所有涉及的变量。是否存在
NULL
指针?是否有数组索引超出范围?至少请更新问题以包含a,并标出崩溃发生的位置以及所有相关变量的值。请至少显示
数组的声明。
。您不在某个位置插入位,而是删除除某个位置上的位以外的所有位。按照您所说的声明变量,对于您所声明的值,代码不可能在您所说的地方崩溃,除非编译器中存在生成错误代码的bug(可能性很小,但并非不可能,您是否使用任何特殊的优化标志?),否则您确实需要在调试器中运行调试构建来定位崩溃。