#include <iostream>
#include <limits>
template <class T>
void show_range(T t) {
std::cout
<< "value: " << static_cast<long long>(t) << ", "
<< "min: " << static_cast<long long>(std::numeric_limits<T>::min()) << ", "
<< "max: " << static_cast<long long>(std::numeric_limits<T>::max()) << "\n";
}
int main() {
unsigned char uc = 42;
show_range(uc);
show_range(+uc);
show_range(uc + 0);
show_range(uc * 1);
show_range(uc << 0);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgoKdGVtcGxhdGUgPGNsYXNzIFQ+CnZvaWQgc2hvd19yYW5nZShUIHQpIHsKCXN0ZDo6Y291dAoJCTw8ICJ2YWx1ZTogIiA8PCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHQpIDw8ICIsICIKCQk8PCAibWluOiAiIDw8IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWluKCkpIDw8ICIsICIKCQk8PCAibWF4OiAiIDw8IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkpIDw8ICJcbiI7Cn0KCmludCBtYWluKCkgewoJdW5zaWduZWQgY2hhciB1YyA9IDQyOwoJc2hvd19yYW5nZSh1Yyk7CglzaG93X3JhbmdlKCt1Yyk7CglzaG93X3JhbmdlKHVjICsgMCk7CglzaG93X3JhbmdlKHVjICogMSk7CglzaG93X3JhbmdlKHVjIDw8IDApOwoJcmV0dXJuIDA7Cn0K
value: 42, min: 0, max: 255
value: 42, min: -2147483648, max: 2147483647
value: 42, min: -2147483648, max: 2147483647
value: 42, min: -2147483648, max: 2147483647
value: 42, min: -2147483648, max: 2147483647