C++中数组值的不正确
我已经在这里工作了两个多小时了。我已将我的问题隔离到一段代码中 问题在于我的数组。它输出的是非常大的负值。我输入到数组中的值是正确的。我对java很有经验,但这是我的第一个C++程序。C++中数组值的不正确,c++,arrays,visual-studio,C++,Arrays,Visual Studio,我已经在这里工作了两个多小时了。我已将我的问题隔离到一段代码中 问题在于我的数组。它输出的是非常大的负值。我输入到数组中的值是正确的。我对java很有经验,但这是我的第一个C++程序。 #include <cstdlib> #include <iostream> #include <sstream> #include <string> using namespace std; int main(){
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main(){
string inputString;
cin >> inputString;
cout << inputString << endl;
int mainArray[10];
for(int x = 0; x < inputString.length(); x++){
int valFound = inputString[x]-48; //minus 48 to change from ascii to int
mainArray[valFound]++;
cout << mainArray[valFound];
}
return 0;
}
任何帮助都将不胜感激,这让我发疯。您的阵列正在默认初始化。int类型的默认初始化会留下垃圾。您需要将其显式初始化为0:
int mainArray[10] = {0};
这是因为数组需要初始化。将此添加到您的代码中:
for (int i = 0 ; i != 10 ; i++) {
mainArray[i] = 0;
}
或者,您可以使用memset:
int mainArray[10]={0};初始化数组。此外,inputString[x]-“0”更便于携带。@请DanielFisher或SamFrench回答!这很有效。我发誓我以前试过,但我想没有。非常感谢。传统的C!总是很好:
memset(mainArray, 0, sizeof(mainArray));