-1

我编写了一些代码来正确证明 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);
}
4

3 回答 3

4

当该行被执行时,它没有任何作用。打开编译器警告并将其更改为:

   positionmask <<= 1;
于 2013-02-27T23:49:29.317 回答
3

你需要这样做:positionmask <<= 1;相反!

编译器永远不会产生错误代码。除非生成编译器的编译器有问题。

于 2013-02-27T23:49:37.640 回答
2

它被执行,它是一个 noop

位置掩码 <<= 1;

自我注意:不要急于发表评论,它会产生垃圾邮件。

于 2013-02-27T23:49:35.463 回答