1. ホーム
  2. c

[解決済み] uint32_tやuint16_tの変数の値を表示するには?

2022-03-01 05:06:44

質問

uint16_tとuint32_tの値を出力しようとしているが、思うような出力が得られない。

#include <stdio.h>
#include <netinet/in.h>

int main()
{
    uint32_t a = 12, a1;
    uint16_t b = 1, b1;
    a1 = htonl(a);
    printf("%d---------%d", a1);
    b1 = htons(b);
    printf("\n%d-----%d", b, b1);
    return 0;
}

また、私は

 printf("%"PRIu32, a);

というエラーが表示されます。

これらの値をどのように印刷すればよいのでしょうか、また、どのような出力が望まれるのでしょうか。

どのように解決するのですか?

を含める必要があります。 inttypes.h のための新しい書式指定子が必要な場合は、それを使用します。 intN_t 型とその仲間たち、そして は、コンパイラがC99に準拠していれば、正しい(つまり移植可能な)方法です。のような標準的なものは使うべきではありません。 %d または %u のように、サイズが異なる場合があります。

それには stdint.h に使えるマクロなど、かなり多くのもので拡張しています。 printf/scanf ファミリーの呼び出しです。これは、ISO C99標準の7.8節でカバーされています。

例えば、次のようなプログラムです。

#include <stdio.h>
#include <inttypes.h>
int main (void) {
    uint32_t a=1234;
    uint16_t b=5678;
    printf("%" PRIu32 "\n",a);
    printf("%" PRIu16 "\n",b);
    return 0;
}

を出力します。

1234
5678