[已解决,一时脑袋进水了]C++ 中遇到的奇怪的问题

update: 楼主犯了简单的错误。。。

------------------------------------
代码如下,逻辑很简单,但运行结果不是预料中的,真是困扰。

serverArry[num]= num; 这一句并不能生效,serverArry[num]的值一直是0;
而使用serverArry[a] 或 serverArry[1]这样的形式,就可以给 serverArry[a]赋值了。
所以问题出在哪里呢?

#include <iostream>
using namespace std;
    
int main(){
        int m = 10;
	int *serverArry = new int[m];

	for(int i=0;i<m;i++)
	{
		serverArry[i] = 0;        
	}
	
	int pathCross[100];

        for(int i = 0 ;i<100;i++){
               pathCross[i] = i+1;
        }
    
        int num = 0;
        for(int a= 1;a<10;a++)
	{
		if(pathCross[a]>0)
		{
			
		cout<<"serverArry"<<num<<"is"<<serverArry[num]<<endl;
                cout<<"num is"<<num<<endl;
                serverArry[num]= num;
                num++;
                cout<<"serverArry"<<num<<"now is"<<serverArry[num]<<endl;
		}
		cout<<endl;
	}
}

没看出来哪有问题。。。

于是乃预料的是神马呢喵?

我在一楼补充了~

num++; 应该放在 cout<<"serverArry"<<num<<"now is"<<serverArry[num]<<endl; 这句之后。
因为在它之前的话 num 的值已经变了,serverArry[num] 是下一个了,不是你改变之后的

然而我也没看出来哪里有问题啊。

没明白你什么意思,赋值肯定成功了啊,但你每次输出的都是还没赋值的数组元素(下一个),当然全是0了。

明白了。
捂脸。。。