我已经编写了一些代码来对齐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);
}
答案 0 :(得分:4)
执行该行时,它无效。打开编译器警告并将其更改为:
positionmask <<= 1;
答案 1 :(得分:3)
您需要这样做:positionmask <<= 1;
而不是!
编译器永远不会生成错误的代码。除非生成编译器的编译器有bug。
答案 2 :(得分:2)
它被执行,它是一个noop
positionmask&lt;&lt; = 1;
自我注意:不要急于发表评论,它会制造垃圾邮件。