1

この小さなプログラムを考えてみましょう:

#include <stdio.h>
int main()
{
    char c = 0xFF;
    printf("%d\n", c);

    return 0;
}

その出力は-1、予想どおりです(charシステムで署名されていると考えてください)。私がやろうとしているのは、それを印刷すること255です。もちろん、これは実際の状況を単純化したものであり、 c署名されていないと定義することはできません。

最初に考えられる変更は%u、代わりに as formatter を使用することですが、ここでは通常のタイプ プロモーション ルールが適用され、数値は 2 32 - 1 として出力されます。

では、int に昇格するに、signed char を unsigned として読み取る方法はありますか? のアドレスに設定された unsigned char へのポインターを作成し、c後で逆参照することはできますが、これが最善の方法であるかどうかはわかりません。

4

1 に答える 1

4

cは、署名された昇格ルールを使用して昇格されています。cunsigned プロモーションを使用するには、unsigned にキャストします。

printf("%u\n", (unsigned char)c);

unsigned char は unsigned int に昇格されます。

于 2011-10-12T16:50:15.410 に答える