|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.09.2011, 20:07 | #1 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Вопрос по printf
Собственно, возник вопрос: почему работает следующий код:
Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
10.09.2011, 20:50 | #2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
предпололагаю, что связано это с такой фичей С++ как type promotion.
все аргументы вашего примера передаются в функцию как double. ну, а потом фукция пытается провести преобразование над double согласно формату, который вы прописали. |
10.09.2011, 21:07 | #3 | |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Цитата:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
|
10.09.2011, 21:24 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
однако может быть проверка типов на соответствие заданым аргументам, все таки это встроенная функция.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
10.09.2011, 22:01 | #5 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Пепел Феникса, то есть просто надстройка компилятора?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
11.09.2011, 21:35 | #6 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Some other variants?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
11.09.2011, 23:20 | #7 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Цитата:
http://en.wikipedia.org/wiki/Type_co...Type_promotion |
|
12.09.2011, 22:22 | #8 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
netrino, то есть в функцию передается double и внутри нее нет ни одного намека на то что этот аргумент был float? Т.е. аргумент float через многоточие передать невозможно?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
13.09.2011, 00:06 | #9 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
возможно, зависит от компилятора.
хотите узнать как оно на самом деле прогоните ваш printf в дизасемблере, посмотрите какими кусками процедура снимает данные со стека, или регистров, или оттуда где они лежат, и что потом с этими данными происходит. |
13.09.2011, 20:32 | #10 | |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Цитата:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
printf | stenl1 | Общие вопросы C/C++ | 8 | 03.01.2011 12:26 |
Вопрос про фунцию printf() | Anateron | Общие вопросы C/C++ | 12 | 12.03.2010 16:00 |
Ошибка в функцие printf | Sarumjan | PHP | 5 | 26.02.2010 11:33 |
printf | zmey31313 | Помощь студентам | 4 | 13.01.2010 18:29 |
unicode и printf | Legat | Общие вопросы C/C++ | 9 | 06.07.2008 13:41 |