我正在通读以下代码:
if( (i%2) == 0 ){
*d = ((b & 0x0F) << 4);
}
else{
*d++ |= (b & 0x0F);
};
我特别关注
else
语句,想知道这是按什么顺序发生的?我没有一个普通的C编译器,所以我不能测试它。当我们执行*d++ |= (b & 0x0F);
时,发生这种情况的顺序是什么? 最佳答案
++应用于指针d
,而不是分配给*d
的左值。
如果你真的想,你可以这样想:b
的值是按位的,并且:ed与常数0x0f
生成的位模式按位或:ed转换为d
所指向的值。
指针d
递增,指向下一个值。