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

C++类构造函数中循环赋值字符数组后print函数无输出的问题求助

问题排查:hexnum类print函数无输出的原因

嘿,我一眼就找到问题啦!根本不是你构造函数的循环赋值有问题,而是你的print函数里的for循环踩了一个新手常见的小坑——循环变量i没有初始化!

问题出在哪里?

看你这段print函数的代码:

void hexnum::print() {
    for(int i; i<DIM; i++) {
        cout<<hex[i];
    }
    return;
}

你只声明了int i,但没有给它初始值。在C++中,局部变量默认不会被自动初始化,i会是一个随机的垃圾值。如果这个随机值刚好大于等于DIM(也就是6),循环条件i<DIM从一开始就不成立,循环直接跳过,自然就没有任何输出了。

你提到手动赋值构造函数时print能正常工作?那只是巧合而已——那次运行时i的随机值碰巧小于6,但这种行为完全不可靠,换个环境或者多运行几次可能就又会出现无输出的情况。

修正后的代码

只需要给print函数里的循环变量i加上初始值0就可以了:

void hexnum::print() {
    for(int i = 0; i<DIM; i++) { // 初始化i为0
        cout<<hex[i];
    }
    return;
}

这样循环会从数组的第一个元素(索引0)开始,依次打印每一个字符,不管你用构造函数的循环赋值还是手动赋值,都能稳定输出结果。

新手小提示

C++中的局部变量(比如函数内的变量、循环变量)默认是未初始化的,它们的值是未定义行为——每次运行都可能不一样,很容易导致奇怪的bug。所以一定要记得给这类变量手动初始化哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:27:29