You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse中C++拆分uint16_t为uint8_t后cout打印出现问号如何解决

问题原因分析
  • 核心原因是uint8_t在绝大多数C编译器实现中,是unsigned char的别名。C标准库的cout输出char/unsigned char/signed char类型变量时,默认会将其作为ASCII字符处理,而非整数值。
  • 你拆分出的两个字节对应的数值分别是高字节0x96(十进制150)、低字节0xD7(十进制215),二者都超出了ASCII可打印字符的范围(0~127),因此终端会将其渲染为不可识别的问号符号。
解决方法

输出时将uint8_t类型的变量强制转换为整数类型即可触发数值打印逻辑,示例修改后的代码如下:

#include <iostream>
#include <cstdint> // 标准写法需要包含该头文件获取uint16_t、uint8_t定义
using namespace std;

int main() {
    uint16_t num1 = 38615;
    uint8_t num2 = (num1 & 0XFF);
    uint8_t num3 = ((num1 & 0XFF00) >> 8);

    cout << static_cast<unsigned int>(num3) << endl; 
    cout << static_cast<unsigned int>(num2) <<endl;
    return 0;
}

运行后将输出预期的两个整数值:150和215。

内容的提问来源于stack exchange,提问作者user15356606

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 14:06:03