char is not signed by standard, but it's signed by default in MSVC/GCC/Keil