0

Встретился с проблемой, что при суммировании 3 цифр из строки, сумма получается на 144 больше, чем она должна быть на самом деле. (без "(int)" так-же выводит на 144 больше, чем нужно).

код:

#include <iostream>
#include <string>

using namespace std;

int main() {

string bilet;
int sum1, sum2;

cin &gt;&gt; bilet;

sum1 = (int) bilet[0] + (int) bilet[1] + (int) bilet[2];
sum2 = (int)bilet[3] + (int)bilet[4] + (int)bilet[5];

cout &lt;&lt; sum1 &lt;&lt; &quot; &quot; &lt;&lt; sum2;

return 0;

}

Ввод: 123123

Вывод: 150 150

Arrlow
  • 11
  • 1

1 Answers1

3

(int) bilet[0] - это не перевод символа-цифры в число, а получение ASCII-кода символа - например, для "1" это будет 49 (0x31)

Вы можете отнять от полученного значения код нуля 0x30 (или от результата 144=48*3), но в общем случае стоит использовать функции преобразования (atoi и т.д.)

MBo
  • 53,555