编译错误 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
希望解释一下?

回答:

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

换个写法

else

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

再换一个

else {

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

}

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

以上是 编译错误 error: expected &#x27;;&#x27; before &#x27;{&#x27; token| 的全部内容, 来源链接: utcz.com/p/195136.html

回到顶部