On Fri, Dec 22, 2023 at 1:54 PM Olavi Esker via Gcc <gcc@gcc.gnu.org> wrote: > > Hello, > > #include <iostream> > #include <cstdint> > > int main() > { > std::int8_t myInt{65}; > myInt += 1; > std::cout << myInt; > } > > Guess what this returns? > Character "B". > > int main() > { > std::int8_t myInt{}; > std::cin >> myInt; > std::cout << myInt; > } > This will also read a character, and > print the characters ascii value. > So if I give it 3, it read it as '3', and prints out 51. > > > The compiler gives no warning of this whatsoever with the flags: > "-std=c++20", > "-pedantic-errors", > "-Wall", > "-Wpedantic", > "-Wshadow", > "-Wcast-align", > "-Wlogical-op", > "-Wno-unused-parameter", > "-Weffc++", > "-Wextra", > "-Wconversion", > "-Wsign-conversion". > > > t does seem like a mistake to have `signed char` and `unsigned char` > display as characters rather than numbers, since `char` is a distinct type. > And so `char` could display as a character and the other two as integers. > > Wish you can change this.
First this is the wrong email list, it should be sent to gcc-help@. Second, your subject line can be read as being offensive to some folks due to the use of the phrase "lives matter". Third, this is what the C++ standard says it should be. And it might be better to be brought up to a C++ forum rather than one about the GCC implementation of the C++ standard. Thanks, Andrew Pinski > > Thanks. > OE