Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2011, 20:18   #1
Destinystar3422
Новичок
Джуниор
 
Аватар для Destinystar3422
 
Регистрация: 10.06.2011
Сообщений: 10
Печаль Для чего нужны %d,%f и %lf в тех частях где я запрашиваю данные с клавиатуры или выписываю их?

Код:

Код:
#include <stdio.h>
int main()
{
    int a;
    double b;
    printf("A=");
    scanf("%d", &a);
    printf("B=");
    scanf("%lf", &b);
    printf("A*B=%f\n", a*b);
    getchar();
    getchar();
}
Вопрос: Для чего нужны %d,%f и %lf в тех частях где я запрашиваю данные с клавы или выписываю их? И что это такое? В каких случаях и что надо пользовать , буду премного благодарен!

Последний раз редактировалось Stilet; 11.06.2011 в 16:20.
Destinystar3422 вне форума Ответить с цитированием
Старый 10.06.2011, 20:26   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
scanf("%d", &a);
%d - указание функции scanf о том, что нужно считать int (то же самое, что и %i). (&a - адрес переменной a, по этому адресу функция записывает значение, т.е. в переменную a).
Код:
scanf("%lf", &b);
%lf - указание считать long double (не уверен точно, почитайте справочники где-нибудь).
Код:
printf("A*B=%f\n", a*b);
%f - указание вывести double
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.06.2011, 20:35   #3
Destinystar3422
Новичок
Джуниор
 
Аватар для Destinystar3422
 
Регистрация: 10.06.2011
Сообщений: 10
По умолчанию

спасибо, все ясно, я про что-то подобное и думал, значит для каждого типа данных есть подобная команда если я правильно понял, а %lf я думаю значит long float, возможно я ошибаюсь
Destinystar3422 вне форума Ответить с цитированием
Старый 10.06.2011, 22:51   #4
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

%lf - число с плавающей точкой, а float или double - в зависимости от того, куда записывать будете)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.06.2011, 23:03   #5
Destinystar3422
Новичок
Джуниор
 
Аватар для Destinystar3422
 
Регистрация: 10.06.2011
Сообщений: 10
По умолчанию

float в переводе с английского означает плавающее ...
Destinystar3422 вне форума Ответить с цитированием
Старый 10.06.2011, 23:48   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
%lf - число с плавающей точкой, а float или double - в зависимости от того, куда записывать будете)
Не зависит. Функция scanf() выделяет определенное число байт, в зависимости от переданного спецификатора, и записывает их по переданному адресу. Она ничего не знает о том, адрес какой конкретно переменной вы передали.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 11.06.2011, 00:53   #7
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Тогда должны быть проблемы при записи в float или double
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 11.06.2011, 01:13   #8
Destinystar3422
Новичок
Джуниор
 
Аватар для Destinystar3422
 
Регистрация: 10.06.2011
Сообщений: 10
По умолчанию

это сейчас уже не важно,то что я спросил вы прекрасно обяснили, вы бы лучше в другую тему заглянули а то там хорошей помощи я пока не дождался... http://programmersforum.ru/showthread.php?p=822648
Destinystar3422 вне форума Ответить с цитированием
Старый 11.06.2011, 10:45   #9
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Granus Посмотреть сообщение
Тогда должны быть проблемы при записи в float или double
Если вы передали спецификатор формата, который предполагает выделение памяти, например 8 байт, а по переданному адресу у вас переменная занимает 4 байта, тогда будут проблемы
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 11.06.2011, 12:27   #10
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Код:
Если вы передали спецификатор формата, который предполагает выделение памяти, например 8 байт, 
а по переданному адресу у вас переменная занимает 4 байта, тогда будут проблемы
Об этом я и говорю)
Форматируйте код, будьте людьми.

Последний раз редактировалось Stilet; 11.06.2011 в 16:20.
Granus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для чего нужны эти символы? Andrij Помощь студентам 0 01.11.2010 18:34
статья - Что, где, когда или? с чего начать программировать? Pblog Обсуждение статей 0 23.06.2010 05:13
Для чего нужны ассемблерные вставки в RAD STUDIO 2009 manzar Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 07.01.2010 15:43
Для чего нужны типы данных? Вадим Буренков Паскаль, Turbo Pascal, PascalABC.NET 9 09.03.2009 21:42
для тех кто учиться или учился в 10классе !!! neBu4kaMaXiM Свободное общение 5 24.02.2009 20:52