Uint16_tを印刷するには、printf()を使用する必要があります。このSO回答( int32_tおよびuint16_t変数の値を出力する方法は? )は、inttypes.hを使用する必要があることを示しています。
ただし、組み込みシステムで作業しており、inttypes.hは使用できません。 uint16_tのフォーマット指定子が使用できない場合、uint16_tを印刷するにはどうすればよいですか?
Inttypes.hのスタイルを使用する必要がありますが、シンボルは自分で定義してください。例えば:
#define PRIu8 "hu"
#define PRId8 "hd"
#define PRIx8 "hx"
#define PRIu16 "hu"
#define PRId16 "hd"
#define PRIx16 "hx"
#define PRIu32 "u"
#define PRId32 "d"
#define PRIx32 "x"
#define PRIu64 "llu" // or possibly "lu"
#define PRId64 "lld" // or possibly "ld"
#define PRIx64 "llx" // or possibly "lx"
あなたのマシンのためにそれらを理解し、それらを使用してください。 inttypes.hで必要なものを確認してください。
これにより、コードの移植性が高まります。 70年代後半から組み込みシステムの仕事をしています。私を信じてください:移植性は重要です。
明白な方法は次のとおりです。
printf("%u\n", (unsigned int)x);
Unsigned intは少なくとも16ビットであることが保証されているため、これは不可逆変換ではありません。
short int
は少なくとも16ビット長の最小値なので、値をunsigned short int
に変換し、%hu
で出力します。