![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
![]()
Собственно, возник вопрос: почему работает следующий код:
Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
![]() |
![]() |
![]() |
#2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
предпололагаю, что связано это с такой фичей С++ как type promotion.
все аргументы вашего примера передаются в функцию как double. ну, а потом фукция пытается провести преобразование над double согласно формату, который вы прописали. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
![]() Цитата:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
однако может быть проверка типов на соответствие заданым аргументам, все таки это встроенная функция.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
![]()
Пепел Феникса, то есть просто надстройка компилятора?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
![]()
Some other variants?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
![]() |
![]() |
![]() |
#7 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]() Цитата:
http://en.wikipedia.org/wiki/Type_co...Type_promotion |
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
![]()
netrino, то есть в функцию передается double и внутри нее нет ни одного намека на то что этот аргумент был float? Т.е. аргумент float через многоточие передать невозможно?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
![]() |
![]() |
![]() |
#9 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
возможно, зависит от компилятора.
хотите узнать как оно на самом деле прогоните ваш printf в дизасемблере, посмотрите какими кусками процедура снимает данные со стека, или регистров, или оттуда где они лежат, и что потом с этими данными происходит. |
![]() |
![]() |
![]() |
#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 |