-1

文字のバイト内のすべてのビットを右揃えにするコードをいくつか書きました。ただし、アプリケーションは行を実行しないため、ループに陥ります。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

それは実行されます、それはヌープです

位置マスク <<= 1;

注意: 急いでコメントを作成しないでください。スパムが作成されます。

于 2013-02-27T23:49:35.463 に答える