编译错误 error: expected ';' before '{' token|

int* plusOne(int* digits, int digitsSize, int* returnSize){  //  加一 算法;
int i=digitsSize-1;  //当为一的时候;
int *p;
while(1)
{
       if(*(digits+i)==9)
     {
            *(digits+i)=0; 
     }
    c.|29|//  else   ( *(digits+i)!=9 || i==0)                                  
     {
         *(digits+i)+=1;

          break;
     }
      i--;
}
printf("i=%d\n",i);
p=digits;
if(0<=i)  //第一种没加到最前一位;
{
  
    *returnSize=digitsSize;//返回相同的数;
    return p;
}
else//加到最前一位;
{

    *returnSize = digitsSize + 1; // 首位为0说明最高位进位,长度+1
    int *res = (int *)malloc(*returnSize * sizeof(int));
    res[0] = 1; // 假设最高位为1
    memcpy(res + 1, digits, digitsSize * sizeof(int)); // 复制digits到res的后         digitsSize位中
    return res;

}
}

.c|29|error: expected ';' before '{' token|
使用codeblocks 2017 版
将 while 中的else 加 分号不报错;
或使用else if 不报错;
QQ图片20200305160816.png
希望解释一下?

阅读 6.3k
1 个回答
else (*(digits+i)!=9 || i==0);

换个写法

else
    (*(digits+i)!=9 || i==0);

再换一个

else {
    (*(digits+i)!=9 || i==0);
}

(*(digits+i)!=9 || i==0); 是一个合法的语句,作为 else 的部分自然是没有问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进