我有一个c ++程序,我需要遍历字符串并打印字符。我得到正确的输出,但随着输出我得到一些垃圾值(垃圾值为0)。我不知道为什么我会得到这些价值观?任何人都可以帮我吗?
#include <iostream>
using namespace std;
int number_needed(string a) {
for(int i=0;i<a.size();i++)
{
cout<<a[i];
}
}
int main(){
string a;
cin >> a;
cout << number_needed(a) << endl;
return 0;
}
示例输入
hi
输出
hi0
答案 0 :(得分:5)
您的程序的行为是 undefined 。 number_needed
是非void
函数,因此它需要在所有程序控制路径上显式return
值。
很难知道cout
中main
要打印的内容。根据您的问题文本判断,您也可以将number_needed
的返回类型更改为void
,并将main
调整为
int main(){
string a;
cin >> a;
number_needed(a);
cout << endl; // print a newline and flush the buffer.
return 0;
}
答案 1 :(得分:2)
问题在于这一行:
cout << number_needed(a) << endl;
将其更改为:
number_needed(a);
问题是number_needed()
正在输出字符串的每个字母,但在此之后,您输出number_needed()
返回的值,即0。