一个位图排序程序,其中assign部分为:
for(i = MAX/64-1;i >= 0;i--){
for(j = 0;j < 64;j++){
if(0 != (arr[i] & (1 << j))){
*p++ = j + 64 * i;
}
}
}
我gdb了,有时候if条件返回0,程序还是进入block执行语句:
*p++ = j + 64 *i;
最后导致segmentfault,就是不明白什么情况下会发生
示例:
当 gdb 状态如下时:
j=44, i=6250, arr[i]=4096 并print (arr[i] & (1 << j))
给出 0
但程序仍进入块