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

Reply via email to