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