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

为什么这段实现数值交换的C++ swap函数代码会输出垃圾值

问题背景

要求输入两个数字并交换二者数值后打印交换结果。无需自行处理打印逻辑,相关逻辑已预先实现,仅需完成给定函数的编写即可,函数定义如下:

pair <int, int> swap(pair <int, int> swapValues) {
         int c;
         c=swapValues.first; 
         swapValues.first=swapValues.second;
         swapValues.second=c;
         cout<<swapValues.first<<" "<<swapValues.second<<"
";

         }
输出垃圾值的原因
  • 核心问题:该函数声明的返回值类型为pair<int, int>,但函数执行完交换逻辑后没有添加return swapValues;语句返回处理后的pair对象,这属于C++标准定义的未定义行为,函数返回值对应的内存区域会是随机的脏数据。题目预先实现的打印逻辑会读取该函数的返回值输出,最终打印的就是垃圾值。
  • 附加问题:题目明确要求无需自行实现打印逻辑,代码中额外添加的cout语句还存在字符串字面量非法拆分的语法问题,也可能进一步导致输出异常。
修正后的正确代码
pair <int, int> swap(pair <int, int> swapValues) {
    int temp = swapValues.first;
    swapValues.first = swapValues.second;
    swapValues.second = temp;
    // 按要求返回交换后的对象即可,无需自行打印
    return swapValues;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:15:02