這個問題在這里已經有了答案: uint8_t 不能用 cout 列印 8 個答案 17 小時前關閉。
#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. 我沒有解釋為什么,有人可以向我解釋一下嗎?
uj5u.com熱心網友回復:
<< age
age是 a uint8_t,它是 a 的基礎本機型別的別名unsigned char。您的 C 庫將std::ostream的<<多載實作unsigned char為單個、孤獨的字符的格式化操作。
只需將其轉換為int.
<< static_cast<int>(age)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/512399.html
標籤:C 隐式转换初始化列表
上一篇:在解構式中獲取鎖是一個壞主意嗎?
下一篇:ID3D11RenderTargetView在ID3D11DeviceContext::OMSetRenderTargets()上被移除
