【问题标题】:Infinite loop (do - while)无限循环(do - while)
【发布时间】:2015-07-08 12:26:11
【问题描述】:
for(int m=0;m<=3;m++){
    for(int n=0;n<=3;n++){
        if(n>0){
            int c =n,t=1;
            do{
                t = up_key_no0(&puzz[c][m]);
                c--;
            }while(t==1||c>=0);
        }
    }
}
int up_key_no0(int *puzy){
    int *puzx = puzy -4;
    int down = *puzy;
    int up = *puzx;
    if(((down==up)||(up==0))&&down!=0){
        *puzx += *puzy;
        *puzy=0;
        return 1;
    }
    else{
        return 0;
    }
}

下面的代码错了吗?如果是,则回复。 The Whole Code Cant Be Fit But puzz 是一个 4X4 的二维数组

【问题讨论】:

  • 在我们回答“是”或“否”之前,您的代码甚至试图做什么?
  • 我忍不住把注意力放在了puzy上。
  • 您能标出您使用的是哪种语言吗?您能否还说明您的代码应该做什么以及您看到了什么症状?
  • @500-InternalServerError C,一个笨蛋!我希望我能用 C#...

标签: infinite-loop do-while


【解决方案1】:

当 t 为 1 且 c 为 0 时,您的 do-while 循环可能会超出表的范围到负索引。所以也许您应该将条件更改为 (t == 1 &amp;&amp; c &gt;= 0)(而不是 or)。

【讨论】:

    【解决方案2】:

    我不知道语言是这样的,但它就像 Java,“for”应该是这样的:

    for (var i=0;i<=3;i++) {
    
    }
    

    您的时间可能是错误的。而这个“==”应该是“=”。

    while(t=1||c>=0) {
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多