c++. Выводит сумму на 144 больше, чем нужно
Встретился с проблемой, что при суммировании 3 цифр из строки, сумма получается на 144 больше, чем она должна быть на самом деле. (без "(int)" так-же выводит на 144 больше, чем нужно).
код:
#include <iostream>
#include <string>
using namespace std;
int main() {
string bilet;
int sum1, sum2;
cin >> bilet;
sum1 = (int) bilet[0] + (int) bilet[1] + (int) bilet[2];
sum2 = (int)bilet[3] + (int)bilet[4] + (int)bilet[5];
cout << sum1 << " " << sum2;
return 0;
}
Ввод: 123123
Вывод: 150 150
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
(int) bilet[0] - это не перевод символа-цифры в число, а получение ASCII-кода символа - например, для "1" это будет 49 (0x31)
Вы можете отнять от полученного значения код нуля 0x30 (или от результата 144=48*3), но в общем случае стоит использовать функции преобразования (atoi и т.д.)