Какие объявления по умолчанию для типов существуют в списке вариационных аргументов?
Например, я использую функцию printf
в C ++ для 8-битного процессора (AVR). Безопасен ли следующий код:
uint8_t a = 5; printf("%d", a);
Здесь %d
ожидает int
(16-бит в моем случае и по крайней мере 16-бит в любом случае), но я передаю 8-битное целое число.
Стандарты C / C ++ гарантируют, что любой тип с рангом, меньшим, чем int
продвигается до int
?
- Как создать методы переменных аргументов в Objective-C
- Как переменные аргументы реализованы в gcc?
- Как передать переменное количество аргументов printf / sprintf
- Потенциальное загрязнение кучи по параметру varargs
- trailing return type с использованием метода decltype с функцией вариационного шаблона
Тот же вопрос для float a
и %f
который ожидает double
и другие аналогичные типы.
- Почему printf () продвигает float в double?
- Java, 3 точки в параметрах
- Как создать многовариантную функцию haskell?
- Как определить применение Lisp в Haskell?
- Неоднозначные методы варгара
- Как передать ArrayList параметру метода varargs?
- Есть ли getchas с использованием varargs со ссылочными параметрами
- Как передать массив Scala в метод Scala vararg?
Посмотрите в проекте n1256 (C99 с техническими исправлениями TC1, TC2 и TC3 в комплекте) для 6.5.2.2 Function calls
:
Для функций без прототипа или параметров, соответствующих эллипсису ...
, проводятся рекламные акции по умолчанию.
Это: По умолчанию целочисленные рекламные акции и продвижение float
в double
.
Целевые поощрения по умолчанию: каждый целочисленный тип ранга меньше, чем int
, присваивается int
или unsigned int
.