In scanf format strings, %d reads a signed decimal integer (can be positive or negative), while %u reads an unsigned decimal integer (only non-negative values). There is no %ud format specifier. Option C is correct. When reading with %u, values are interpreted as unsigned; this matters for bit patterns where the high bit would indicate negative in signed representation.