我已经写了一些代码来证明char字节中的所有位正确。
但是,应用程序陷入了循环,因为它从不执行行positionmask<<1;

为什么会这样呢?

void rjustify(char thisChar)
{
    unsigned char c = thisChar;
    unsigned char positionmask = 1;
    unsigned char insertionmask = 1;
    while(positionmask)
    {
            if(c & positionmask)
            {
                    c^=positionmask;
                    c|=insertionmask;
                    insertionmask<<=1;
            }
            positionmask<<1; //This line is never executed.
    }
    printf("%c", &c);
}

最佳答案

当执行该行时,它无效。出现编译器警告并将其更改为:

   positionmask <<= 1;

10-08 03:51