VS2010写了一段C++代码,编译通过,运行结果不正确,重新抄写一边运行结果就正确了。为什么?

我也可以把我写的代码发到您的邮箱。求好心人帮我。我没有多少财富。
#include<iostream> // 此代码运行结果不正确
using namespace std;
class Arry
{public:
Arry();
friend Arry operator+(Arry&,Arry&);
void input();
void display();
private:
int m[2][3];
};
Arry::Arry()
{for(int i=0;i<2;i++)
for(int j=0;i<3;j++)
m[i][j]=0;}
Arry operator+(Arry&a,Arry&b)
{Arry c;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
c.m[i][j]=a.m[i][j]+b.m[i][j];
return c;}
void Arry::input()
{for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
cin>>m[i][j];}
void Arry::display()
{for(int i=0;i<2;i++)
{{for(int j=0;j<3;j++)
cout<<m[i][j]<<",";}
cout<<endl;}}
int main()
{Arry a,b,c;
a.input();
b.input();
c=a+b;
c.display();
return 0;}
//******************************
#include<iostream> //此代码运行结果正确
using namespace std;
class Arry
{public:
Arry();
friend Arry operator+(Arry&,Arry&);
void input();
void display();
private:
int m[2][3];
};
Arry::Arry()
{for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
m[i][j]=0;}
Arry operator+(Arry&a,Arry&b)
{Arry c;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
c.m[i][j]=a.m[i][j]+b.m[i][j];
return c;}
void Arry::input()
{for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
cin>>m[i][j];}
void Arry::display()
{for(int i=0;i<2;i++)
{{for(int j=0;j<3;j++)
cout<<m[i][j]<<",";}
cout<<endl;}}
int main()
{Arry a,b,c;
a.input();
b.input();
c=a+b;
c.display();
return 0;}

很可能是中文字符导致的,这个得具体看报错的提示。其实这个你不用太过纠结,写的多了,自然就不会出现这种情况了。同时,以后注意点就行了。追问

中文标点符号编译不是不能通过吗?这个编译都可以通过的。第二个能编译通过的程序我是照着第一段程序抄写的。都没有改。另外中文标点符号与英文标点符号在文本里占的位置不一样多。我都一行一行的对过好几遍了。没有不一样的地方啊。

追答

中文是不能通过,所以你开始不是编译错误了吗。第二次的时候,你抄写的时候,没有输入中文字符所以就编译通过了。或者有中文的空格什么的,这个只能是这些原因了。编译器出问题的概率非常非常低,99%是你输入的有问题。更简单的方法是用UE进行编译错误的和正确的对比,一下就出来了。

我刚才对比了一下。
14-for(int j=0;j<3;j++)
14-for(int j=0;i<3;j++)
看出来了吗?一个i一个j

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-19
这个没有遇到过
相似回答