Спецификатор формата для сканирования длинного unsigned int

Я пытаюсь взять две переменные в качестве ввода, используя этот фрагмент кода: -

unsigned int i;

unsigned long int j;

scanf("%u",i);

scanf("%lu",j);

Но это приводит к следующим предупреждениям: -

warning: format '% u ожидает аргумент типа unsigned int *, но аргумент 2 имеет тип unsigned int [-Wformat] warning: format '% lu ожидает аргумент типа long long unsigned int *, но аргумент 2 имеет тип long long unsigned int [-Wformat] Может ли кто-нибудь объяснить мне, что происходит здесь?

Ответ 1

Вам нужно добавить ведущий &, поскольку scanf принимает указатели на выходные параметры. В противном случае он не сможет их записать.

scanf("%lu", &i);