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