C++里int ms和ms=0有什么区别?

以上情况出现在函数内
#include <iostream>
using namespace std;
int b[35][35],step=-1,ms;
int m,n,s1,s2,e1,e2,i,j;
char a[35][35];
void find(int x,int y)
{
step++;
if(b[x][y]>step||b[x][y]==0)
{
b[x][y]=step;
int ms;
把int ms改为ms=0就不对,为什么
ms=step;
if(a[x-1][y]!='X' && x!=1) find(x-1,y);
step=ms;
if(a[x][y+1]!='X' && y!=n) find(x,y+1);
step=ms;
if(a[x][y-1]!='X' && y!=1) find(x,y-1);
step=ms;
if(a[x+1][y]!='X' && x!=m) find(x+1,y);
step=ms;
}
else
return;
}
int main()
{

cin>>m>>n;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
cin>>s1>>s2>>e1>>e2;
find(s1,s2);
cout <<b[e1][e2];
return 0;
}

同学你说的不太清楚,不过根据你说在函数里面出现
1,如果是在不同函数里面出现
说明那是全局变量和局部变量的区别了

可以推断出,
你的int ms是在函数里面定义了一个局部变量
ms=0;是对全局变量的赋值
2,如果是在一个函数里面出现,会出现两种情况第一种是,int ms是定义局部变量,而ms=0
是给定义的这个变量赋值,第二种情况是,外面有一个同名的全局变量,这里考你的是,在函数内部,局部变量覆盖全局变量,因此这里的赋值是对局部变量,而不是全局变量
当然,如果是在一个函数追问

您看一下我补充的题目。谢谢

追答

你这个是全局变量和局部变量的区别,如果你不在函数里面定义int ms的话,你对ms的所有操作是对全局变量的操作(包括赋值,及其他的操作),而且只要程序不结束,你的每次改变的数据,将保留在这个全局变量里面

如果你想在函数内部定义以及局部变量ms这样的话,这个ms只在函数里面起作用,而且,它随着函数的消失而消失,不会保存数据,并且这个局部变量屏蔽全局变量,全局变量起不到作用,

这个要看你想怎么用啊,你如果想保存数据,就用全局的饿,不想保留的话,用局部的,不过,为了防止混淆,你如果不想保留数据时,建议你换一个局部变量

你的注释那个地方我试了,换成ms=0是可以的,况且这种情况咱经常用,绝对没有语法错误,我是在vc6.0上运行的,要不你换个编译器试试

追问

是没有语法错误,但是运行结果不一样

追答

这就是你的程序其他地方或者算法设计有问题了,就不是这个问题了,你下去在调试调试,

不要怕调试,好的程序是调出来的不是写出来的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-20
int ms 只是定义ms是int类型
ms=0是将ms赋值为0
第2个回答  2011-08-20
int ms;是声明一个整型变量,
ms=0;是将变量ms赋值为0;
在C++里,任何变量都必须先声明,不声明的变量是不能被使用的,当然也可以在声明时进行初始化,即:int ms=0;
第3个回答  2011-08-21
C++中变量必须声明