スキャンのためのフォーマット指定子 long unsigned int

次のコードで2つの変数を入力として取ろうとしています:-)

unsigned int i;

unsigned long int j;

scanf("%u",i);

scanf("%lu",j);

しかし、これは次のような警告を発生させます:-)

警告: フォーマット '%u' は 'unsigned int ' 型の引数を予期していますが、引数 2 は 'unsigned int' 型です [-Wformat] 。 警告: フォーマット '%lu' は 'long unsigned int ' 型の引数を予期していますが、引数 2 は 'long unsigned int' 型です [-Wformat]-Warning: フォーマット '%lu' は 'long unsigned int *' 型の引数を予期しています。 どなたか、ここで何が起こっているのか説明していただけませんか?

scanfは出力パラメータへの *ポインタ* を取るので、先頭の&` を追加する必要があります。そうでなければ、出力パラメータに書き込むことができません。

scanf("%lu", &i);
解説 (0)