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; 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语句中改变的r和c的值.
求大神指教,为什么同样是for循环中,有的能够更改外部变量并使用改变后的值,有的却不行呢???
谢谢….
版权声明:本文为Jankin-Lee原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。