无法删除输出后的随机数
Unable to remove the random numbers after the output
我想构建一个支持多语言的程序,但如果我将语言选择代码包含在主函数中,它会很混乱,所以我制作了另一个名为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
然后我添加返回0在std::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;
}
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 递归函数计算序列中的平方和(并输出过程)
- 整数不会重复超过随机数
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 如何在C++中输出两组不同的随机数
- 从数组中删除未使用的内存,以免输出随机数
- 如何从随机数中输出文本
- 输出不同的随机数
- mt19937 随机数范围 - 奇怪的输出 00A8106E
- 输出 4 组 7 个升序有序和唯一随机数
- 为什么我的随机数程序输出垃圾
- 输出上的随机数
- 无法删除输出后的随机数
- 伪随机数生成器给出相同的第一个输出,但随后的行为和预期的一样
- C++生成随机数而不重复.输出屏幕只是一片空白,光标在闪烁
- C++随机数发生器只输出2
- 为什么我的输出中会得到随机数
- C++随机数输出"Game"
- 随机数(rand)不能输出未知字符