为啥我的代码输出有 4745728 作为输出? [关闭]

Posted

技术标签:

【中文标题】为啥我的代码输出有 4745728 作为输出? [关闭]【英文标题】:Why the output of my code has 4745728 as the output? [closed]为什么我的代码输出有 4745728 作为输出? [关闭] 【发布时间】:2021-04-29 21:12:32 【问题描述】:

每当用户输入 1-5 之间的正整数时,我正在制作一个简单的程序来计算用户余额。我只为第一个选项编写代码,但输出中发生了一些奇怪的事情,这是我的代码:

#include <iostream>
using namespace std;
int balance = 100000;
int iNet = 59900;

int internet(int iNet, int code, int remain)
        if(code == 1)
            remain = balance - iNet;
            cout << "Price = " << iNet << endl;
            cout << "Remaining credit = " << remain <<endl;
         


int main()
    int code, remain;
    
    cin >> code;
    cout << internet(iNet, code, remain);
    return 0;

但是当我运行程序时,它显示如下:

用户输入

1 

程序输出

Price = 59900
Remaining credit = 40100
4745728

我不知道4745728 来自哪里。

【问题讨论】:

你从来没有 return 任何来自 internet() 函数的东西。我可以建议获得a good C++ book 吗?您当前的学习资源似乎无法解释编码的基础知识。 已经尝试输入return 0;,结果输出也输入0,这不是我想要的。 那你想要什么?请注意,您必须始终准确返回 1 个整数。 @drescherjm 删除 4745728 的东西 您还需要将函数更改为void internet(int iNet, int code, int remain)。否则你的程序有未定义的行为。 【参考方案1】:

如果您不想从函数返回任何内容,请将返回类型设为void

void internet(int iNet, int code, int remain)
// ^
        if(code == 1)
            remain = balance - iNet;
            cout << "Price = " << iNet << endl;
            cout << "Remaining credit = " << remain <<endl;
         

然后编译器将不再允许你打印垃圾值,你将不得不修复你的 main:

int main()
    int code, remain;
    
    cin >> code;
    internet(iNet, code, remain);
    //^ don't print anything, just call the function
    return 0;

【讨论】:

以上是关于为啥我的代码输出有 4745728 作为输出? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的查询结果只输出一行?

不确定为啥代码重复某些输出

为啥重新执行我的多线程代码后输出不一样?

为啥在代码“456”+1中,输出是“56”[重复]

为啥我的输出在到达这部分代码时会冻结?

为啥我的 Linux 版本的 logstash 不通过换行写入输出文件