Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
IvanInanovich
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 113
#1

Преобразование +'0' - C++

30.05.2013, 18:37. Просмотров 255. Ответов 2
Метки нет (Все метки)

Приветствую. Возможно кто-то сможет объяснить почему так получается : )
Нужно было создать шаблон функции. Которая будет находить максимальный элемент в массиве, массивы должны быть разных типов.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using namespace std;
 
template<class T>
 T amax( T *arg, int size)
{
    T temp = 0;
 
    for(int k = 0; k < size; k++)
        if(temp < arg[k])
            temp = arg[k];
    return temp;
}
 
int main()
{
   const int Max = 5;
    int iar[Max] = {1,3,54,65,777};
 
        cout << "\niar max = " << amax(iar,Max) << endl;
 
        float far[Max] = {1.3,3.34,543.4,651.233,777.34};
 
        cout << "\nfar max = " << amax(far,Max) << endl;
 
         char car[Max] = {1,3,5,6,7};
 
        cout << "\ncar max = " << amax(car,Max)+'0' << endl; // вот тут нуль
return 0;
}
Вопрос в следующем, почему в последней строке, если мы пытаемся char преобразовать в int с помощью нуля (+'0') то в данная программа показывает не верный результат (число 55) ? Если же мы преобразуем вот таким вот образом:
C++
1
cout << "\ncar max = " << (int)amax(car,Max) << endl;
то выводится 7 т.е. правильный результат.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2013, 18:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование +'0' (C++):

Преобразование типа или преобразование типа указателя ? - C++
Добрый день. Помогите пожалуйста понять что делает вот эта команда: out.write ((char *) &amp;n, sizeof n); Она что, перед записью в файл...

Преобразование - C++
О каком преобразовании идет речь в строке 34, если конструктор принимает тип double и аргумент (10.0) записывается в double dReal? // ...

Преобразование - C++
есть переменная чар. есть куча переменных типа инт. int a,b,c,d,e.. как сделать чтобы при вызове cout&lt;&lt;char c; этот чар давался...

Преобразование С++ - C++
Не знаю как разрулить один ньюанс. Есть динамический массив симолов.(char mass=new char; ) Есть динамический массив даблов.(double...

преобразование - C++
Господа как преобразовать из LPTSTR в - LPCTSTR

Преобразование переменных - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { int j,i=5; string ss=5; char...

2
yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
30.05.2013, 18:44 #2
Потому что вы создаете массив не символов 1,3,5,6,7 , а значений. Если было бы так:
C++
1
char car[5] = {'1', '3', '5', '6', '7'};
то работало как вы хотели бы, а
C++
1
cout << "\ncar max = " << (int)amax(car,Max) << endl;
наоборот, не правильно
1
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
30.05.2013, 18:45 #3
потому что функция amax(car,Max) имеет результат int, стало быть результат выражения int, код символа '0' = 48. 48 + 7 будет 55, все верно.
В чем он неверный то?
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2013, 18:45
Привет! Вот еще темы с ответами:

Преобразование векторов - C++
Дан вектор А и вектор B. Если разность между максимальными элементами векторов больше 10, то из положительных элементов обеих векторов...

Преобразование списка. - C++
Есть класс, реализующий линейный двухсвязный список. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...

Преобразование строки - C++
Здраствуйте, У меня возник вопрос о том как решить мою представленную задачу. Даны несколько строк и их надо преаброзовать по...

преобразование типов - C++
помогите у меня программа выдает ошибки преобразования типов подскажите как должно быть чтоб все работало программа делает перестановки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru