Я пытаюсь понять поведение компилятора C ++. Вот код, в котором я умышленно сделал две ошибки:
- забыл
%ld
спецификатор формата в scanf
и только что написал %
. - добавил неизвестный спецификатор формата для
printf
- написал %l
вместо %ld
для long
тип данных.
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
// Complete the code.
int a; long b; char c; float d; double e;
scanf("%d % %c %f %lf", &a, &b, &c, &d, &e);
printf("%d \n%l \n%c \n%f \n%lf", a, b, c, d, e);
return 0;
}
Выше приведен фрагмент кода, который успешно компилирует и показывает предупреждения. Почему он не выдал ошибку для неизвестного / отсутствующего спецификатора формата C ++? Как это было скомпилировано?
Вывод: