Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
|
||||||
#1 | ||||||
Что опять не так в функции? - C++30.03.2009, 12:34. Просмотров 1476. Ответов 26
Метки нет Все метки)
(
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
30.03.2009, 12:34 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Что опять не так в функции? (C++):
26
Ошибки в функции что не так? - C++ Что не так в этой функции? - C++ Ошибки в функции что не так? - C++ Найти решение заданной функции. Что делаю не так? - C++ Что не так в функции? Написать функцию вставки элемента в массив - C++ Нужно экспертное мнение! Что рациональнее!? почему так работают функции?! - C++ |
Haster
инженер-системотехник
111 / 110 / 2
Регистрация: 10.03.2009
Сообщений: 533
|
|
30.03.2009, 12:42 | #2 |
Т.к. у тебя все параметры в функции используются по умолчанию, то вызов функции с одним аргументом всегда заменяет только первый параметр...
соответственно, power(32.51); сругается на ощибку, ибо компилятор не может преобразовать double к char
1
|
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
|
|
30.03.2009, 12:42 | #3 |
Tiami, всё не так.
Ты объявляешь функцию с тремя параметрами, а когда вызываешь, передаешь только один, притом еще разных типов, или вообще не передаешь ничего. Второе: чтобы задать значения параметров по умолчанию, нужно в объявлении функции написать имена переменных: void power(char ch='*', int x=1, float y=7); Вызывая такую функцию, можно будет передавать значения только типа char для первого параметра, int для второго и float для третьего. Ты же передаешь разные типы для первого параметра. Третье: функция не возвращает значения (объявлена как void), но ты пытаешься вывести на экран возвращаемое значение ( cout<<power() ), которого не существует. И еще одно замечание: ты в функции не используешь, ни x, ни y. зачем они тогда нужны? ))))
1
|
Humanitis
175 / 167 / 6
Регистрация: 12.01.2009
Сообщений: 430
|
|
30.03.2009, 12:43 | #4 |
1
|
Haster
инженер-системотехник
111 / 110 / 2
Регистрация: 10.03.2009
Сообщений: 533
|
|
30.03.2009, 12:45 | #5 |
Deicider полностью прав ))
1
|
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
|
|
30.03.2009, 12:50 | #6 |
Даже если перегружать, то тоже осторожно использовать надо, так как при передаче в функцию целого числа со значением от 0 до 255, оно по сути может соответствовать и типу char, и int, и float, а свыше 255 до (не помню точно какого
![]()
0
|
Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
|
|
30.03.2009, 12:52 [ТС] | #7 |
Странно а я думал функция автоматически определяет тип аргумента....
0
|
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
|
|
30.03.2009, 12:53 | #8 |
Она-то определяет, но я пишу про то, что есть значения, которым может соответствовать несколько типов.
0
|
Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
|
|
30.03.2009, 12:54 [ТС] | #9 |
0
|
Humanitis
175 / 167 / 6
Регистрация: 12.01.2009
Сообщений: 430
|
|
30.03.2009, 12:55 | #10 |
Deicider, Думаю тут не будет проблем при перегрузке.
Литерал 0..255 по умолчанию будет типом int Литерал записанный в кавычках,будет типом char и соответсвенно для float,записанный через точку. Другое дело если мы будем подставлять в функцию типы отличные от перечисленных. например short int или double
0
|
Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
|
|
30.03.2009, 12:57 [ТС] | #11 |
0
|
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
|
|
30.03.2009, 13:03 | #12 |
Сейчас задумался над своим сообщением насчет типов. А можно ли целое число без запятых перепутать с float? Или если нет запятой, то это точно будет int? подскажите, кто знает! ))
Насчет char и int всё что я написал остается в силе, так как char это однобайтовая целочисленная беззнаковая переменная. Добавлено через 2 минуты 56 секунд Tiami, Может быть тут проблема: for(int j=1;j<50,j++). Нужно через ; записывать.
0
|
Haster
инженер-системотехник
111 / 110 / 2
Регистрация: 10.03.2009
Сообщений: 533
|
|
30.03.2009, 13:03 | #13 |
Есть схема, которой следует компилятор при работе с типами...
Как я помню, тип float по умолчанию не приводится к типу int.... При всех операциях тип char автоматически расширяется до int... float до double.... А вот преобразование int во float осуществляется без проблем, т.к. не связано с потерей точности
0
|
Humanitis
175 / 167 / 6
Регистрация: 12.01.2009
Сообщений: 430
|
|
30.03.2009, 13:21 | #14 |
0
|
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
|
|
30.03.2009, 13:28 | #15 |
0
|
30.03.2009, 13:28 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
30.03.2009, 13:28 |
Привет! Вот еще темы с ответами:
15
Функции(опять передача результатов выполнения))) - C++ Не работает strcmp + указатели непойми что опять выводят - C++ При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так? - C++ Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее? - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |