この小さなプログラムを考えてみましょう:
#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
後で逆参照することはできますが、これが最善の方法であるかどうかはわかりません。