无法删除输出后的随机数

Unable to remove the random numbers after the output

本文关键字:随机数 输出 删除      更新时间:2023-10-16

我想构建一个支持多语言的程序,但如果我将语言选择代码包含在主函数中,它会很混乱,所以我制作了另一个名为language的函数,然后我写了下面的代码:

#include <iostream>
int language() {
std::cout << "1.Englishn2.中文";
}
int main() {
    std::cout << language();
}

然后我的代码::Blocks IDE给了我一个警告:

*warning: no return statement in function returning non-void [-Wreturn-type]|*

我仍然可以通过命令提示符使用MinGW编译代码,但编译后的程序给出了以下输出:

1.English
2.中文4683872

然后我添加返回0std::cout<lt;"1.英语\n2。中文";但它显示0,而不是上面的4683872。

我还在学习C++,我不知道我的代码发生了什么,有什么方法可以删除这些数字吗?

在程序中,首先打印字符串,然后打印函数的返回值。。。这就是为什么字符串后面有一个数字。

试试看:

// I don't think your language function need to return something
// So make it void
void language() {
    std::cout << "1.Englishn2.中文";
}
int main() {
    language(); // Here no need to print the value returned by the language function
    return 0;   // Main return an int, 0 is for success
}

只是解释一下:

事实上,language()函数返回int值,而您没有返回任何内容,这将导致未定义的行为。这就是为什么会得到像4683872这样的值。这也是为什么你在汇编中有一个警告。

您的代码中有两个问题:第一个问题是您将language声明为返回int,但实际上没有返回任何内容。这就是警告的意义所在。另一个问题是基于第一个问题,即使没有"返回值",您也会实际使用这个"返回的值",这会导致未定义的行为。

可以通过两种方式解决它:从函数中返回一个有效值,或者将其声明为返回void,并且不要在表达式中使用该函数。

您必须对返回值进行排序!您希望language函数返回一个输出流,因为您将其输出馈送到main中的std::out中。您还可以将一个输出流传递到language中,这样您就可以将它与std::out的不同输出流一起重用。此外,main必须返回一个int。标准做法是返回0,除非出现错误。

#include <iostream>
std::ostream& language(std::ostream& os) {
    os << "1.Englishn2.中文"; 
    return os;
}
int main() {
    std::cout << language(std::cout) << std::endl;
    return 0;
}

如果你想让用户选择一种语言,那么你的代码需要更像这样:

#include <iostream>
int language() {
    int choice;
    std::cout << "1.Englishn2.中文";  // print menu of language choices
    std::cin >> choice;               // get selection from user
    // NB: real code would have error checking here to make sure that `choice` is valid
    return choice;                    // return selection
}
int main() {
    std::cout << language();
}

std::cout << language();正在为您打印一个整数,因为language()返回一个int。如果不希望在文本后打印任何内容,请删除main中的std::cout <<

    #include <iostream>
    void language() {
    std::cout << "1.Englishn2.中文";
    }
    int main() {
        language();
        return 0;
    }