2015-03-13 2 views
-1

У меня есть два символа. Каждый из них хранит цифры от 0 до 9. Я хочу найти сумму этих двух, а затем по модулю 10, чтобы обеспечить результат в виде одной цифры (0-9) И, наконец, преобразовать результат обратно в char.Смешно простая логика все еще дает ошибку

Я сделал это, но это не будет работать:

char a = '4'; 
char b = '8'; 
char c = (char)((a - '0') + (b - '0') % 10); 
+5

Вы забыли переключиться с числового значения на значение ASCII – Hurkyl

+0

Что вы имеете в виду? Вот почему у меня есть характер. – Bazooka

+0

Typecast не волшебным образом превратит '4' в' '4''. – n0rd

ответ

3

Линии

char c = (char)((a - '0') + (b - '0') % 10);

Выступает

char c = (char)(4 + 8 % 10)

Но модуль оператор приходит before добавление ОПА rator ...

Вы получаете char c = char(12), что эквивалентно new page.

Вы также можете добавить '0' в c, хотя из-за текущего порядка операций, которые у вас есть, НЕ укажет 0-9 номер.

+0

Даже если я добавлю дополнительный скобок как: 'char c = (char) (((a - '0') + (b - '0'))% 10); ', это не работает. :( – Bazooka

+2

@Bazooka, тогда вы делаете 'char c = (char) 2;' который является другим символом управления ascii. См. Последнее предложение ответа Дона –

Смежные вопросы