我正在通读以下代码:

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递增,指向下一个值。

08-25 22:49