byte x , corr;
//x принимает значение от 40 до 100
corr = 70 - x;
x = x + corr;
Не пойму, как происходит вычисление. Если х <= 70, то все понятно. Например, х=60, тогда corr=10 и x становится равен 70. Но если x , к примеру изначально равен 80, тогда в serial выдается corr = 246, а x + corr = 70. В принципе, мне это и нужно, но вроде byte не может принимать отрицательных значений. Как же считает компилятор?
Вы же сами написали, что байт не может быть отрицательным.
Значения байта лежат в диапазоне от 0 до 255, верно?
А теперь представьте, что это не отрезок с двумя концами, а кольцо, в котором после 255 снова идет ноль.
Тогда (-10) - это число лежащее на 10 единиц левее нуля, то есть 256 - 10 = 246
А 80+246 - это чуть сложнее. Это 10 единиц от 246 до 256 (которое у нас ноль, помните?) и остается еще 70