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

为何打印char数组{{15,23},{35,47}}时输出为#/?

问题原因及解决方法

你定义的是char类型的二维数组,而std::cout输出char时,会把它当作ASCII字符来解析,而非数字本身:

  • 15对应ASCII控制字符(Shift Out),终端通常不会显示该字符
  • 23对应End of Transmission,同样是不可见的控制字符
  • 35对应ASCII字符#
  • 47对应ASCII字符/

所以终端只会显示可识别的#和/,前面的控制字符被忽略,最终输出#/。


方法1:修改数组类型为int

直接将数组类型改为int,让std::cout直接输出数字:

#include <iostream>

int main()
{
    int i, j;
    
    int arr[2][2] = { {15, 23}, {35, 47}};
    
    for(i=0; i<2; i++){
        for (j=0; j<2; j++){
            std::cout << arr[i][j] << " "; // 加空格分隔数字,提升可读性
        }
        std::cout << std::endl; // 每行结束换行
    }
}

方法2:输出时强制类型转换

如果不想修改数组类型,输出时将char强制转为int,让cout输出数字值:

#include <iostream>

int main()
{
    int i, j;
    
    char arr[2][2] = { {15, 23}, {35, 47}};
    
    for(i=0; i<2; i++){
        for (j=0; j<2; j++){
            std::cout << static_cast<int>(arr[i][j]) << " ";
        }
        std::cout << std::endl;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:52:01