1. ホーム
  2. c

[解決済み] unsigned short intのフォーマット指定子は何ですか?

2022-05-04 21:18:24

質問

次のようなプログラムがあります。

#include <stdio.h>

int main(void)
{
    unsigned short int length = 10; 

    printf("Enter length : ");
    scanf("%u", &length);

    printf("value is %u \n", length);

    return 0;
}

を使ってコンパイルすると gcc filename.c は、次のような警告を発した(中略 scanf() の行)。

warning: format ‘%u’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘short unsigned int *’ [-Wformat]

その後、私は C99 specification - 7.19.6 Formatted input/output functions のような)長さ修飾子を使うときに、正しい書式指定子を理解できませんでした。 short , long 等)で unsigned にとって int のデータ型になります。

です。 %u 正指定子 unsigned short int ? もしそうなら、なぜ上記のような警告が出るのでしょうか!

EDIT。 ほとんどの時間、私は試行錯誤していました。 %uh という警告が表示されたままでした。

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

を使ってみてください。 "%h" の修飾子があります。

scanf("%hu", &length);
        ^

ISO/IEC 9899:201x - 7.21.6.1-7

次のd、i、o、u、x、X、またはnの変換を指定する。 の型を持つ引数に適用されます。 ポインタをショートさせるか 符号なしショート .