que es el% 2d en scanf

Sé el significado de esta statement
scanf("%d",&x); //Reads an integer and stores it in the variable x
Pero, ¿qué hace esta statement
scanf("%2d",&x);
Intenté buscar esto, pero no pude encontrar una respuesta. Quiero saber qué sucede internamente también.

Es el número de dos dígitos:

 int n = 0; scanf ("%2d", &n); printf ("-> %d\n", n); 

12 -> 12

88657 -> 88

El número justo después del signo ‘%’ y justo antes del tipo de datos que desea leer representa el tamaño máximo de ese tipo específico de datos.

Cuando está leyendo un número entero (% 2d), solo permitirá un número entero de hasta dos dígitos. Si tuviera que leer una matriz de 50 caracteres, debería usar% 50s. Es la misma idea.

 int number = 0; scanf("%2d", &number); printf("%d", number); 

Si el usuario pasó 21 para la función scanf (), el número 21 se almacenaría en el número variable. Si el usuario pasa algo más de 21, es decir, 987, solo se almacenarán los primeros 2 dígitos: 98.