I only found pretty unrelated questions due to the tons of results searching for printf().
Why does uint8_t not specify its own format string but any other type does?
As far as I understand printf(), it has to know the length of the supplied parameters to be able to parse the variable argument list.
Since uint8_t and uint16_t use the same format specifier %u, how does printf() "know" how many bytes to process? Or is there somehow an implicit cast to uint16_t involved when supplying uint8_t?
Maybe I am missing something obvious.