c++ - 为什么我的值从 int 转换为 char?

标签 c++ implicit-conversion initializer-list

<分区>

#include<iostream>
#include<string>

class Person_t{
private:
        uint8_t age;
public:
        void introduce_myself(){
                std::cout << "I am  " << age << " yo" << std::endl;
        }

        Person_t()
                : age{99}
        { };

};

int main(){
        Person_t person1{};
        person1.introduce_myself();
}

当显示的代码被执行时,初始化列表中的整数被转换为 c。我不知道为什么,有人可以向我解释一下吗?

最佳答案

<< age

ageuint8_t ,它是 unsigned char 的基础原生类型的别名.你的 C++ 库实现了 std::ostream<< unsigned char 过载作为对单个孤独角色的格式化操作。

只需将其转换为 int .

<< static_cast<int>(age)

关于c++ - 为什么我的值从 int 转换为 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74006203/

相关文章:

c++ - std::initializer_list 作为重载运算符的右手参数?

c++ - 如何在 C++11 中正确初始化数据成员?

c++ - 修改 c 字符串

c++ - 为什么打印这个值虽然是 NaN?

c++ - 新运营商(错误 :expected expression before struct)

c++ - 有没有办法在 C++11 中传递嵌套初始化列表来构造二维矩阵?

c++ - 编译器如何隐式地进行这种转换?

scala - 如何在 Scala 中链接隐式?

arrays - 如何在不知道c中大小的情况下遍历数组

c++ - 将初始值设定项列表与返回引用的用户定义转换运算符一起使用时复制返回值