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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дан файл f, компоненты которого являются целыми числами. Найти: http://www.cyberforum.ru/cpp-beginners/thread885362.html
Не знаю си++, но, несмотря на мое незнание, нужно написать лабораторную работу по следующей задаче: Дан файл f, компоненты которого являются целыми числами. Найти: а) сумму компонентов файла f; б)...
C++ Функция с++ Доброго времени суток! Столкнулся с проблемой в задании условия в функции. double f(int i, int j, int k) { if ( (X - Lx/2)*(X - Lx/2) + (Y - Ly/2)*(Y - Ly/2) + ... http://www.cyberforum.ru/cpp-beginners/thread885345.html
C++ Необработанное исключение
Вот пытаюсь спровоцировать исключение, все работает только оно вылетает не там где я ожидаю. По идее когда список пуст имеет пуститься исключения throw out_of_range("List is empty!");, но неожиданно...
Форматированное чтение из файла в массив структур C++
Здравствуйте, посоветуйте как лучше сделать чтение из файла в массив структур с разными типами данных. Входной файл (все денные введены через знак табуляции): toyota 130 250 1500 sedan 2200 1800...
C++ алгоритм http://www.cyberforum.ru/cpp-beginners/thread885322.html
подскажите что делает этот алгоритм, и что с ним делать? %-) http://pixs.ru/showimage/algoritmJP_7940233_8092649.jpg
C++ Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений a11, a12,...,a1m нужно решение на с++ Даны натуральное число n, целочисленная матрица i=1,2; j=1,...,m. Найти сумму тех из элементов a2j(j=1,...,m), для которых a1j имеет значение наибольшего среди значений... подробнее

Показать сообщение отдельно
IvanInanovich
0 / 0 / 0
Регистрация: 03.01.2013
Сообщений: 113

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

30.05.2013, 18:37. Просмотров 275. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru