C#/C++,int类型变量在循环体内赋不上值是怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/09/13 01:15:29
问题如下:
#include"iostream"
using namespace std;

int main()
{ int n=5;
char q[100];
gets(q);
int m=0;
int x1=0;
int x2=5;
m=q[x1];
for(int i=x1;i<x1+x2+1;i++)//从X1位置X2范围+1内找最小值
{
if(m>q[i])
{ m=q[i];
n=i; //记录最小值位置
}
}
cout<<n<<endl;
return 0;
}
但是,我发现不论把int n;放在函数外面还是里面,在“记录最小值”那里根本不能改变n 的值,这是怎么回事?
怎么解决这个问题?
我跟踪了,
它运行过程中循环体是进去了的,而且符合条件的时候也执行了m=q[i]这个操作,但是没有执行n=i这条操作,
就是因为它没执行这条操作,所以在跟踪到循环体内部的时候始终得不到n的值(跟踪的时候只有发生变化和语句自身含有的变量的值能得出来)。
n的值始终未能改变。
你要没遇到过就把代码拿去试试看。看出问题在哪里了告诉我。

另外,事件查看器在哪看?

它要是没执行我用得着来问别人吗.问题就是执行了{}那条语句却没改变n的值才有疑问了嘛。

说就说不说就算了.
既然没人知道,那就只好结束问题了.

循环有问题。if(m>q[i])
{ m=q[i];
n=i; //记录最小值位置
}
没执行

char q[100];//没初始化
gets(q);//这个得到什么啊

先加分,我教你

用断点跟踪,和对象查看器试试看语句有没有被执行. 值有没有改变.

有关java的问题,这里都有很详细的讲解,你可以参考一下,方法有很多
参考资料:http://www.baidu.com/s?wd=%B1%B1%B7%E7%CD%F8&rsv_bp=0&rsv_spt=3&inputT=131