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

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

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

  1. //存储信息并判断分数
  2. for(step1;step1<;step1++) {
  3. for(int changeCount=;changeCount!=;changeCount++){
  4. int dir = step1;
  5. int nowChess;
  6. if(changeCount==){//改变判断棋子的角度
  7. nowChess=myChess;
  8. //qDebug()<<__LINE__<<nowChess;
  9. }else if(changeCount==){
  10. nowChess=(myChess==?:);
  11. //qDebug()<<__LINE__<<nowChess;
  12. }
  13. for(int k=;k<;k++){//每个方向取4个子的信息
  14. if(k==0){
  15. //qDebug()<<__LINE__<<"switch";
  16. switch(step1){//前四个方向的初始值,通过基点位置加偏移量的方式,获取附近的点信息
  17. case 0:
  18. r=i-1+1;
  19. c=j+1;
                        break;
  20. case 1:
  21. r=i-1+1;
  22. c=j+1+1;
                        break;
  23. case 2:
  24. r=i+1;
  25. c=j+1+1;
                        break;
  26. case 3:
  27. r=i+1+1;
  28. c=j+1+1;
                        break;
  29. }
  30. }else{
  31. qDebug()<<__LINE__<<"!";
  32. qDebug()<<__LINE__<<r;
  33. qDebug()<<__LINE__<<c;
  34. r+=dx[dir];//这里有问题,r和c并没有变化,不知道为什么.
  35. c+=dy[dir];
  36. //qDebug()<<__LINE__<<r;
  37. //qDebug()<<__LINE__<<c;
  38. //qDebug()<<__LINE__<<"!";
  39. }
  40. if(r< || c< || r> || c>){
  41. break;
  42. }
  43. if(chess[r][c]==nowChess){
  44. count++;
  45. chessInfo[step1][-k]=nowChess;
  46. }else{
  47. chessInfo[step1][-k]=chess[r][c];
  48. break;
  49. }
  50. }
  51. for(int k=;k<;k++){
  52. dir+=;
  53. if(k==0){
  54. //qDebug()<<__LINE__<<"switch";
  55. switch(step1){//后四个方向的初始值
  56. case 0:
  57. r=i+1+1;
  58. c=j+1;
                        break;
  59. case 1:
  60. r=i+1+1;
  61. c=j-1+1;
                        break;
  62. case 2:
  63. r=i+1;
  64. c=j-1+1;
                        break;
  65. case 3:
  66. r=i-1+1;
  67. c=j-1+1;
                        break;
  68. }
  69. }else{
  70. //qDebug()<<__LINE__<<"!";
  71. //qDebug()<<__LINE__<<r;
  72. //qDebug()<<__LINE__<<c;
  73. r+=dx[dir];
  74. c+=dy[dir];
  75. //qDebug()<<__LINE__<<r;
  76. //qDebug()<<__LINE__<<c;
  77. //qDebug()<<__LINE__<<"!";
  78. }
  79. if(r< || c< || r> || c>){
  80. break;
  81. }
  82. if(chess[r][c]==nowChess){
  83. chessInfo[step1][k+]=nowChess;
  84. count++;
  85. }else{
  86. chessInfo[step1][k+]=chess[r][c];
  87. break;
  88. }
  89. }
  90. myCount=changeCount==?count:myCount;
  91. hisCount=changeCount==?count:hisCount;
  92. }
  93. }

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

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

谢谢....

for循环相关的一个问题的更多相关文章

  1. 为什么很多人坚信“富贵险中求”?

    之家哥 2017-11-15 09:12:31 微信QQ微博 下载APP 摘要 网贷之家小编根据舆情频道的相关数据,精心整理的关于<为什么很多人坚信"富贵险中求"?>的 ...

  2. python基础全部知识点整理,超级全(20万字+)

    目录 Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https:// ...

  3. Tomcat一个BUG造成CLOSE_WAIT

    之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...

  4. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

  5. 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...

  6. SQLSERVER将一个文件组的数据移动到另一个文件组

    SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...

  7. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  8. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  9. 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车

     阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...

随机推荐

  1. 以通配符(%)开始的like字符串,走索引

    在对oracle的SQL优化过程中经常会遇到[like'%abc']破坏索引的问题,但是如果真有此类需求,该如何在不破坏索引的基础上进行查询呢. [sql] view plain copy sys@m ...

  2. redis主从配置+哨兵模式

    1.搭建redis主从,一个master两个slave,加一个哨兵监听(sentinel),可以新建三个虚拟机,模拟环境,我的电脑没那么多虚拟机,就在一台虚拟机上弄的. 2.安装redis,如果是三台 ...

  3. Chef 自动化运维:Chef 的安装

    安装准备 准备三台服务器,分别用作 Chef Server.Chef DK.Chef Client 的安装使用. 在三台服务器中,添加以下 hosts: vim /etc/hosts 192.168. ...

  4. 《写给大家看的设计书(第3版)》【PDF】下载

    <写给大家看的设计书(第3版)>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196355 内容简介 <写给大家看的设计书&g ...

  5. 接口json数据与数据库数据循环比对校验

    创建测试计划,加载数据库驱动: 线程组: csv配置元件: 注:Filename用的是相对路径,csv文件要与jmeter脚本文件在同一目录 JDBC连接配置: jdbc请求: 用户定义的变量: ht ...

  6. jemeter工作台设置

    工作台的设置 1.创建一个线程组 创建一个http代理服务器:工作台-->添加-->非测试元件-->http代理服务器 设置参照下图,要录制的时候点击启动 2.设置IE浏览器 IE- ...

  7. dispatch_sync和dispatch_async的区别

    dispatch_sync 线程同步.dispatch_async线程异步 比如 //同步 dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE ...

  8. [置顶] Xamarin android沉浸式状态栏

    虽然关于android "沉浸式"状态栏有很多博客介绍过,从小菜到大神无一例外.我第一次看到这种"沉浸"式的效果我也以为真的是这么叫,然而根本不是这么回事,完全 ...

  9. java环境配置教程jde,jre

    控制面板--所有控制面板项--系统--高级系统设置--环境变量 JAVA_HOME = D:\java\jdk CLASSPATH = .;%JAVA_HOME%\lib;%JAVA_HOME%\li ...

  10. Ansible 系列之 Patterns

    Ansible 之 Patterns 1.Ansible中的Patterns决定了我们要管理哪个主机,意思是与哪些主机进行交互. 我们将在Ad-Hoc(Ad-Hoc 是指 临时执行的命令,要结合着模块 ...