Какие объявления по умолчанию для типов существуют в списке вариационных аргументов?

Например, я использую функцию printf в C ++ для 8-битного процессора (AVR). Безопасен ли следующий код:

 uint8_t a = 5; printf("%d", a); 

Здесь %d ожидает int (16-бит в моем случае и по крайней мере 16-бит в любом случае), но я передаю 8-битное целое число.

Стандарты C / C ++ гарантируют, что любой тип с рангом, меньшим, чем int продвигается до int ?

Тот же вопрос для float a и %f который ожидает double и другие аналогичные типы.

Посмотрите в проекте n1256 (C99 с техническими исправлениями TC1, TC2 и TC3 в комплекте) для 6.5.2.2 Function calls :

Для функций без прототипа или параметров, соответствующих эллипсису ... , проводятся рекламные акции по умолчанию.

Это: По умолчанию целочисленные рекламные акции и продвижение float в double .

Целевые поощрения по умолчанию: каждый целочисленный тип ранга меньше, чем int , присваивается int или unsigned int .

  • Вызов метода Java varargs с единственным аргументом null?
  • Какова цель модификаторов h и hh для printf?
  • Когда вы используете varargs в Java?
  • Какой смысл перегружать методы фабрики удобство для коллекций в Java 9
  • разность fn (String ... args) vs fn (String args)
  • Java «params» в подписи метода?
  • Давайте будем гением компьютера.