Читать int
с помощью scanf мы используем:
scanf("%d", &i);
Что, если i
a long
нет int
??
Примечание: при использовании %d
с long
это дает мне раздражающее предупреждение..
Просто использую
long l;
scanf("%ld", &l);
он выдает мне раздражающее предупреждение...
Это предупреждение совершенно справедливо. Это напрашивается на повреждение стека.
Каждый спецификатор преобразования ожидает, что его соответствующий аргумент будет определенного типа; если тип аргумента не соответствует ожидаемому типу, то поведение не определено. Если вы хотите читать в лонг с помощью scanf ()
, вам необходимо использовать спецификатор преобразования % ld
:
long i;
scanf("%ld", &i);
Проверьте онлайн черновик стандарта C (файл .pdf), раздел 7.19.6.2, параграф 11, где приведен полный список модификаторов размера и ожидаемых типов.
scanf("%ld", &i);
Вы также можете использовать "%Ld"
для long long
(и в зависимости от вашего компилятора, иногда также "%lld"
).
Посмотрите раздел "Преобразования" на man-странице scanf, чтобы узнать больше. (Если в вашей системе нет man-страниц, просто зайдите в Google).