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

C++基础int数组输出异常,如何实现356的目标输出?

问题解答:C++数组输出不符合预期的原因及解决方案

咱们先把两个代码的问题拆解清楚,再说说怎么实现你想要的356输出:

第一段代码输出垃圾值的原因

你这段代码里定义了固定大小为3的数组int num[3]{3,5,6};,C数组的索引是从0开始的,合法索引只有0、1、2,对应元素3、5、6。而你尝试访问num[3],这属于数组越界访问——你碰了数组内存范围之外的区域,这在C里是未定义行为,输出的-858993460只是这块内存里的随机垃圾值而已。

另外提一句:你的代码还缺少int main()函数包裹,实际是无法通过编译的,应该是你简化了代码片段~

第二段代码输出内存地址的原因

这段代码里你用int num[]{3,5,6};(省略大小后编译器会自动推断数组长度为3),然后直接cout << num;。在C++中,数组名在多数场景下会被隐式转换成指向数组第一个元素的指针,所以cout输出的是这个指针的内存地址(也就是你看到的004FFC48),而不是数组里的元素内容。

实现输出356的正确方式

要得到数组元素拼接后的356,你需要遍历数组的每个元素并依次输出。这里给你补全完整可编译的代码:

方式1:传统for循环

#include <iostream>
#include <string>
using namespace std;

int main() {
    int num[]{3, 5, 6};
    // 通过sizeof计算数组长度,避免硬编码
    for (int i = 0; i < sizeof(num)/sizeof(num[0]); ++i) {
        cout << num[i];
    }
    cout << endl; // 可选,用于换行
    
    string y;
    getline(cin, y);
    return 0;
}

方式2:C++11及以上的范围for循环(更简洁)

#include <iostream>
#include <string>
using namespace std;

int main() {
    int num[]{3, 5, 6};
    for (int n : num) {
        cout << n;
    }
    cout << endl;
    
    string y;
    getline(cin, y);
    return 0;
}

这两段代码都会依次输出3、5、6,自然拼接成你想要的356。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:25