>But would it be better if this gave a different result? > > signed char n = '\n'; > std::cout<< "Hello world"<< n; of course ;-) these are equivalent: signed char n = '\n'; int8_t n = '\n'; int8_t n = 10; therefore I would expect "Hello world10". it's the same as this being different: float n = '\n'; std::cout<< "Hello world"<< n;