Что будет, если передать значение больше 255 в unsigned char C++?

Добрый день. Сейчас изучаю сверку изображений. Сам считаю на листке бумаги.
У меня получилось значение 355 при свертке, каким образом оно будет храниться в переменной unsigned char?
Будет 255 или (355-255) = 100?

UPD
Всем спасибо=)
  • Вопрос задан
  • 1355 просмотров
Решения вопроса 1
@MiiNiPaa
Буду нестандартным и скажу, что результат вполне может быть 355. Недавно работал с
C2000, и там char 16битный, в полном соответствии со стандартом.

Полный ответ — если запихать X в unsigned char, результат будет X mod 2^n, где n это разрядность char.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Free_ze
Пишу комментарии в комментарии, а не в ответы
Переполнения не контролируются автоматически. Можно делать это самостоятельно, к примеру, с помощью std::numeric_limits.

§5 черновика Стандарта C++:

1. [ Note: Clause 5 defines the syntax, order of evaluation, and meaning of expressions.60 An expression is a
sequence of operators and operands that specifies a computation. An expression can result in a value and
can cause side effects. — end note ]
....
4. If during the evaluation of an expression, the result is not mathematically defined or not in the range of representable values for its type, the behavior is undefined.
Ответ написан
99.
Все арифметические операции осуществляются на аппаратном уровне в АЛУ.
Современные процессоры общего назначения не имеют дополнительных аппаратных цепей проверок переполнения - ее (проверку) можно осуществлять только самостоятельно (например, анализируя флаги непосредственно после операции). Если таких проверок нет, в разрядах регистра или ячейки памяти результата просто останется то число, которое может сохранить разрядная сетка, т.е. 8 младших бит - 99.
Ответ написан
Комментировать
@vilgeforce
Раздолбай и программист
355 = 0x163, следовательно в unsigned char будет 0x63 или 99.
Проверка реального поведения в отладчике занимает меньше времени, чем написание вопроса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы