この発言の意味はわかる
scanf("%d",&x);
しかし、この声明は何をしますか
scanf("%2d",&x);
これを検索してみましたが、答えが見つかりませんでした。内部で何が起こっているのか知りたいです。
それは2桁の数字です:
int n = 0;
scanf ("%2d", &n);
printf ("-> %d\n", n);
12 -> 12
88657 -> 88
「%」記号の直後で、読み取りたいデータのタイプの直前の数値は、その特定のタイプのデータの最大サイズを表します。
整数 (%2d) を読み取っているため、2桁までの整数のみが許可されます。50 文字の長さの配列を読み取る場合は、%49s を使用する必要があります (null 終端バイト用に 1 つ残します)。それは同じ考えです。
int number = 0;
scanf("%2d", &number);
printf("%d", number);
ユーザーが scanf() 関数に 21 を渡した場合、数値 21 が変数 number に格納されます。ユーザーが 21 よりも長い数字、つまり 987 を渡した場合、最初の 2 桁 (98) のみが保存されます。