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++中变量必须声明

C++里int ms和ms=0有什么区别?
1,如果是在不同函数里面出现 说明那是全局变量和局部变量的区别了 可以推断出,你的int ms是在函数里面定义了一个局部变量 ms=0;是对全局变量的赋值 2,如果是在一个函数里面出现,会出现两种情况第一种是,int ms是定义局部变量,而ms=0 是给定义的这个变量赋值,第二种情况是,外面有一个同名...

c++中int和INT有什么区别?
int是一个数据类型, 而INT可以是宏, 标识符, typedef定义的数据类型, 类类型.但是它一般是用到和int有关的地方.

c语言中为什么int s=0和int s,然后s=0的结果不一样?
两个程序中的s行为不一样。在第一个程序定里,a递增时,s一直在叠加。在第二个程序里,a递增时,s会重新置0。所以,并不是int s=0;和int s; s=0;的问题,两者无差别。C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方...

c++语言中,函数声明,用int和void有什么区别?
用int 声明的函数返回值是int类型,void声明的函数没有返回值,我认为可以相当于pascal里的“过程“(procedure)。其实对函数的理解应该是:执行完函数之后将函数所在的位置用函数的返回值取代。没有返回值的函数的作用就是对传给函数的参数做出一些处理,所以pascal里才叫做procedure,但是在C++里就直接声...

在C++中 void main()与int main()有什么区别???
是有去区别的,int main()表示函数的返回值为int类型,而void main则表示的是空的类型,是不一样的

C语言中inti(1), sum(0)什么意思?
【1】int是C++语言中基本数据类型中的整型。【2】sum指的是返回某一单元格区域中的数、逻辑值及数字的文本表达式之和。【3】int i(1),sum(0);即int i=1,sum=0;意思是把字母i定义为整型常量,把i赋值为1。把具有“总和”意思的英文单词sum定义为整型常量,把sum赋值为0。【4】延伸一下:...

在C++中,int main和void main有什么区别??
main()是省略了返回值类型,C语言会默认认为成main的类型为int,在main()的函数体内要返回一个值,如return 0;而void main()的返回值是void类型,也就是说没有返回值。这样在main()的函数体内你就不用写return 0;或者return 1;之类的返回语句。在一个程序中,可以说你看不出两者的差别,因为...

unsigned和int有什么区别?
首先,一个为非负整数,一个为整数。unsigned只能取到大于等于0的整数。其次,两者取值范围不同。C和C++语言中基本的数据类型有:字符型(char),整形(short, int, long), 浮点型(float, double)同时字符型和整形还可以继续分为带符号的和不带符号的,默认情况下都是带符号的,如果想使用不带...

...函数Time()和Time( int=0, int=0, int=0)有什么区别么?
Time(int=0,int=0,int=0)则是接受了3个参数,只不过都有默认值,所以你在调用时可以省略0~3个参数 带默认参数的函数如果你没给他指定一个值,编译器会帮你自动把没赋值的参数设为原型声明里默认值,在这里都是0 比如有构造函数 Time( int a = 0, int b = 0, int c = 0 )对于下列...

c++中int 和int*有什么不同?
int是声明整型变量的关键字;int*是声明整型指针变量的关键字。比如:int a;就声明了一个整型变量,变量名是a。声明之后,你可以赋值货计算,如:a=8;a=a+2;而int*只能声明整型指针变量,如int*b;声明的b是一个指向整型变量的指针,它只能存放地址。如:b=&a;,b就指向了整型变量a。由于b只能...

相似回答
大家正在搜