Почему `"%c"` существует в `printf`, если `char` преобразуется в `int`?

В языке C есть флаги форматов "%c" и "%f" для printf- и scanf-подобных функций. Обе эти функции используют аргументы переменной длины ... , которые всегда преобразуют floats в doubles и chars в ints.

Мой вопрос в том, что если это преобразование происходит, то почему существуют отдельные флаги для char и float? Почему бы просто не использовать те же флаги, что и для int и double?

Смежный вопрос:
Почему scanf() требует "%lf" для удвоений, в то время как printf() обходится просто "%f"?

5
задан Community 23 May 2017 в 12:20
поделиться