0

以下がintを変換してcharとして表示する正しい方法かどうか疑問に思っています

#include <stdio.h>

int main()
{
   int x = 500;
   printf("%hhd\n", x);
}

また、上から文字の値を表示するには、次のようにすればよいのではないでしょうか。

#include <stdio.h>

int main()
{
   char c = 'a';
   printf("%hhd\n", c);
}

それともちょうどprintf("%d\n", c);いいでしょうか?したがって、基本的には、キャストせずに printf を介して整数の最初のバイトを出力しようとしています。

4

2 に答える 2

5

最初の例で使用%hhdすると、C99準拠は、渡されたを出力する前printf()に変換するように強制されます。文字が署名されているか署名されていないかによって、出力される値として 244 または -12 が表示される場合があります。これが「正しい」印刷方法であるかどうかは議論の余地があります。おそらくそうではありません。文字を印刷する通常の方法は. 1 つの問題は、キャラクターとして何を表すかということです。その値は (ほとんどすべてのプラットフォームで) または型の範囲外です。Unicode 文字またはその他のワイド文字値の場合は、おそらくワイド文字の書式設定バリアント — を使用する必要があります。intchar%c500charsigned charunsigned charwprintf()

%cフォーマットとプレーンなchar値を使用した2番目の例'a'は、適切に動作し、従来のものです。これにより、文字「a」が出力されます。を使用する%hhdと、それも機能し、通常は 97 が出力されます (別の値を取得するには、通常とは異なるコンピューターを使用する必要があります)。

于 2012-11-28T00:40:46.337 に答える
2
#include <stdio.h>

int main()
{
   int x = 500;
   printf("%hhu\n", x);
}

これは印刷されます244

500 = 00000001 11110100

244 = 11110100

于 2012-11-28T18:53:46.317 に答える