Скажем, я использовал printf
без прохождения достаточно аргументов, чтобы соответствовать спецификаторам формата:Что будет делать printf, если недостаточно аргументов?
#include <stdio.h>
int main(void) {
printf("missing argument: %s\n");
}
Существует ли какая-либо гарантия на то, что результат будет?
На моей машине ничего не печатается вообще.
Это всегда так, или есть ли возможность напечатать строку с помощью разрешенного спецификатора?
, например: missing argument: %s
или: missing argument:
поведение будет неопределенным. –
Это UB, поэтому нет никакого стандарта относительно того, что он будет делать. –
Компилятор может выдать предупреждение, но, во всяком случае, строка формата не известна во время компиляции. Рассмотрим 'printf (s, 1, 2);' – AlexD