for循环相关的一个问题

首先,我在for循环外定义了两个变量.

//在4条直线方向,获取预置点两端的8个点的棋盘信息
            int step1=0,r=1,c=1;//step代表直线,r,c分别代表加上偏移量之后的坐标
            int count=1,myCount=1,hisCount=1;//与中心点相连接的同色子的个数,myCount用于myScore,hisCount用于hisScore
            int chessInfo[4][8];//定义4个存储每条直线上的,预置点附近点的信息.一维0,1,2,3分别为竖直,k=1,水平,k=-1的直线.
            //存储方式:如水平线上,预置点左边3个与右边3个,如chess[2][8]={左3,左2,左1,左,右,右1,右2,右3},其他同理.

然后,我在for循环中的更改变量后,望使用更改后的变量值,代码中标红处.

//存储信息并判断分数
            for(step1;step1<4;step1++) {
                for(int changeCount=0;changeCount!=2;changeCount++){
                    int dir = step1;
                    int nowChess;
                    if(changeCount==0){//改变判断棋子的角度
                        nowChess=myChess;
                        //qDebug()<<__LINE__<<nowChess;
                    }else if(changeCount==1){
                        nowChess=(myChess==1?2:1);
                        //qDebug()<<__LINE__<<nowChess;
                    }
                    for(int k=0;k<4;k++){//每个方向取4个子的信息
                        if(k==0){
                            //qDebug()<<__LINE__<<"switch";
                            switch(step1){//前四个方向的初始值,通过基点位置加偏移量的方式,获取附近的点信息
                            case 0:
                                r=i-1+1;
                                c=j+1;
                    break; case 1: r=i-1+1; c=j+1+1;
                    break; case 2: r=i+1; c=j+1+1;
                    break; case 3: r=i+1+1; c=j+1+1;
                    break; } }
else
{ qDebug()<<__LINE__<<"!"; qDebug()<<__LINE__<<r; qDebug()<<__LINE__<<c; r+=dx[dir];//这里有问题,r和c并没有变化,不知道为什么. c+=dy[dir]; //qDebug()<<__LINE__<<r; //qDebug()<<__LINE__<<c; //qDebug()<<__LINE__<<"!"; } if(r<1 || c<1 || r>15 || c>15){ break; } if(chess[r][c]==nowChess){ count++; chessInfo[step1][3-k]=nowChess; }else{ chessInfo[step1][3-k]=chess[r][c]; break; } } for(int k=0;k<4;k++){ dir+=4; if(k==0){ //qDebug()<<__LINE__<<"switch"; switch(step1){//后四个方向的初始值 case 0: r=i+1+1; c=j+1;
                    break; case 1: r=i+1+1; c=j-1+1;
                    break; case 2: r=i+1; c=j-1+1;
                    break; case 3: r=i-1+1; c=j-1+1;
                    break; } }
else{ //qDebug()<<__LINE__<<"!"; //qDebug()<<__LINE__<<r; //qDebug()<<__LINE__<<c; r+=dx[dir]; c+=dy[dir]; //qDebug()<<__LINE__<<r; //qDebug()<<__LINE__<<c; //qDebug()<<__LINE__<<"!"; } if(r<1 || c<1 || r>15 || c>15){ break; } if(chess[r][c]==nowChess){ chessInfo[step1][k+4]=nowChess; count++; }else{ chessInfo[step1][k+4]=chess[r][c]; break; } } myCount=changeCount==0?count:myCount; hisCount=changeCount==1?count:hisCount; } }

qDebug()证明并没有成功使用修改后的变量.仍然使用了最初switch语句中改变的rc的值.

求大神指教,为什么同样是for循环中,有的能够更改外部变量并使用改变后的值,有的却不行呢???

谢谢....

posted @ 2018-01-18 17:31  Jankin_Lee  阅读(222)  评论(0)    收藏  举报