|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.03.2008, 15:01 | #1 |
Пользователь
Регистрация: 07.03.2008
Сообщений: 31
|
Почему так? Знач. по умолч. у функции
Разъясните пожалуйста работу данной программы:
Код:
При выполнении выдает Third time volume equals: 200 Не могу понять - Почему функции VolumeCube не передалось значение width=25? И результат был бы 5000 Может ктонибудь прокомментирует этот код с учебника? |
10.03.2008, 15:32 | #2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
А где вы такой код взяли? Может в третьем случае там всё-таки было:
Код:
|
10.03.2008, 17:51 | #3 |
Пользователь
Регистрация: 07.03.2008
Сообщений: 31
|
B_N ты прав код я изменил... и столкнулся с странной вещьююю. Мне не совсем понятной
|
10.03.2008, 18:18 | #4 |
Пользователь
Регистрация: 20.02.2008
Сообщений: 75
|
|
11.03.2008, 16:07 | #5 |
Пользователь
Регистрация: 07.03.2008
Сообщений: 31
|
alexx777
Не могу понять - Почему функции VolumeCube не передалось значение width=25? И результат был бы 5000 |
11.03.2008, 16:24 | #6 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Еще раз
Задано: int VolumeCube(int length, int width=25, int height=1); Мы передаем фактические параметры. Как уже говорилось имеет значение только порядок их следования, а не имя: volume = VolumeCube(length, height); // length=100, height = 2 внутри функции в соответствии с порядком: length = 100, width=2, height=1 - только height по умолчанию Вот если можно было-бы (Не помню, допускает ли C пропуск одного параметра) volume = VolumeCube(length, , height); тогда width = 25 |
11.03.2008, 19:41 | #7 |
Пользователь
Регистрация: 07.03.2008
Сообщений: 31
|
alexBlack , вот интересует последнее выражение!
Первые 2- понятно. но ведь volume = VolumeCube(length, , height); Third time volume equals: 200 Тоесть 25 вообще в умножении потом не учавствует. return (length * width * height); width тут не 25! Его вообще нет. Чему он вообще тут равен тогда? |
11.03.2008, 22:39 | #8 |
Форумчанин
Регистрация: 29.10.2007
Сообщений: 628
|
Когда Вы передаете функции volume = VolumeCube(length, height); тоесть length, height, то получается что в самой функции return (length * width * height);
length = length, а width получается равен height и равен 2, ну а height по умолчанию (int height=1 это когда вы функции объявляли) равен 1 => 100 * 2 * 1 = 200 Поэтому то и выводится 200... Но возможно я и не прав, так что не вините... Последний раз редактировалось Rembo; 11.03.2008 в 22:41. |
12.03.2008, 00:00 | #9 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Цитата:
Код:
VolumeCube(length, width, 1); или VolumeCube(100, 50, 1); А когда Код:
VolumeCube(length, height, 1); или VolumeCube(100, 2, 1); |
|
14.03.2008, 17:53 | #10 |
Пользователь
Регистрация: 07.03.2008
Сообщений: 31
|
B_N, спасибо за помощь. Сейчас мне понятно, но раньше я почему то обращал внимание на имя параметра, а не на позицию. Хз
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему у мну ошибка??? | Altera | Общие вопросы Delphi | 4 | 09.03.2008 09:29 |
почему не находит??? | vipER | Общие вопросы C/C++ | 1 | 26.09.2007 14:26 |
Почему? | Sota | О форуме и сайтах клуба | 4 | 26.07.2007 16:26 |
Почему так? | Сильванович Михаил | Общие вопросы C/C++ | 2 | 03.07.2007 11:57 |
Обьясните почему так... | malevich | Общие вопросы Delphi | 5 | 10.02.2007 17:29 |