Форум программистов, компьютерный форум CyberForum.ru

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

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

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

30.05.2013, 18:37. Просмотров 239. Ответов 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 т.е. правильный результат.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2013, 18:37     Преобразование +'0'
Посмотрите здесь:

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

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

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

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

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

Преобразование матрицы - C++
Дана матрица размера M × N. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке. Не могу поменять...

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

Преобразование типов - C++
Здравствуйте! Подскажите как преобразовать тип данных: World в double вот код DLL которую я пишу: #include &quot;stdafx.h&quot; ...

Преобразование кода - C++
Друзья, помогите преобразовать код. Создавал в КодБлокс, а препод требует в Визуалке(((, а с визуалкой я не работал... #include &lt;stdio.h&gt;...

Преобразование переменных - C++
Товарищи, подскажите пожалуйста как перевести из UnicodeString в char, const char и long? Гуглить не получается... Заранее благодарен! ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
30.05.2013, 18:44     Преобразование +'0' #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;
наоборот, не правильно
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
30.05.2013, 18:45     Преобразование +'0' #3
потому что функция amax(car,Max) имеет результат int, стало быть результат выражения int, код символа '0' = 48. 48 + 7 будет 55, все верно.
В чем он неверный то?
Ответ Создать тему
Опции темы

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