Есть код:
#include <iostream>
int main(){
unsigned char a = 4, b = 255;
int g = (unsigned char)a + (unsigned char)b;
std::cout << g << std::endl;
return 0;
}
Результат:
259
Почему результат 259, а не 3? Если добавлены две беззнаковые переменные char, должно быть переполнение, результат должен быть 3, а затем он должен преобразовать из unsigned char 3 в int 3.