首先,我在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;
                            case 1:
                                r=i-1+1;
                                c=j+1+1;
                            case 2:
                                r=i+1;
                                c=j+1+1;
                            case 3:
                                r=i+1+1;
                                c=j+1+1;
                            }
                        }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;
                            case 1:
                                r=i+1+1;
                                c=j-1+1;
                            case 2:
                                r=i+1;
                                c=j-1+1;
                            case 3:
                                r=i-1+1;
                                c=j-1+1;
                            }
                        }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循环中,有的能够更改外部变量并使用改变后的值,有的却不行呢???

谢谢….

版权声明:本文为Jankin-Lee原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Jankin-Lee/p/8311405.html