【发布时间】:2017-11-03 21:06:30
【问题描述】:
我正在尝试将 unsigned char 变量的一位更改为 1。但我一直遇到分段错误。这是失败的代码片段:
unsigned char bitvector[16];
int addbit(unsigned char *bitv,int bit){
int a = bit/CHAR_BIT; //part of char array we want. CHAR_BIT is 8
bitv[a] |= 1 <<bit;
return 1
}
...
if(checkbit(pointer->bitvector,i)==0){
//checkbit works great! bitv[0] has the value of 71,
//a turns to be 0 when I call it
addbit(pointer->bitvector,i);
编译: make: *** [all] 分段错误(核心转储)
【问题讨论】:
-
能否请您显示调用
addbit的代码,包括参数的定义? -
1 << bit错误,但不会出现段错误 -
我会尝试在一个最小的例子中重现这个问题,你是对的
-
在某处需要
% CHAR_BIT。
标签: c pointers bitwise-operators bit-shift bitwise-xor