我正在跟踪代码,但我预期的最终输出比实际输出少 1。该函数的返回也让我感到困惑。我不明白 function1 中的 return(b+2) 是什么意思。我应该在哪里添加 2?为了清楚起见,我将输出放在注释中。
#include <stdio.h>
int function1(int info[], int size, int a, int b)
{
//info:3 5 7 9 11 13 15 17 //size=9 //a=i->1..9 //b=(i-1)*(i-1)
if (a<5)//1 3
{
info[a]=b-1;//-1 3
//b=0 4
//a=1 ->-1 //a=3 ->3
printf("info[%d]=%d\n",a,info[a]);
}
else //5 7 9
{
info[a]=b+1;//info[a]=17 37 65
//b=16 36 64
//a=5 ->17 //a=7 ->37 //a=9 ->65
printf("info[%d]=%d\n",a,info[a]);
}
return(b+2); //what's happening here?
}
int main()
{
int info[9],i,j,a,b;
info[0]=1;
for (i=1; i<9; i++)
info[i]=info[i-1]+2; // 3 5 7 9 11 13 15 17
i=1;
while (i<=9)
{
j = function1(info,9, i,(i-1)*(i-1));
printf("while:i=%d j=%d\n\n",i,j); //1 2//3 6//5 18//7 38//9 66
i = i + 2;//1 3 5 7 9
}
printf("\n");
}
Expected:
info[1]=-1
while:i=1 j=-1
info[3]=3
while:i=3 j=3
info[5]=17
while:i=5 j=17
info[7]=37
while:i=7 j=37
info[9]=65
while:i=9 j=65
Actual:
info[1]=-1
while:i=1 j=2
info[3]=3
while:i=3 j=6
info[5]=17
while:i=5 j=18
info[7]=37
while:i=7 j=38
info[9]=65
while:i=9 j=66
最佳答案
我刚刚发现我做错了什么。我只需要将 b 加 2 即可获得 j 值,因为 function1 表示返回(b+2)。 info[a] 的值不是实际输出。
关于c - 我的 C 代码的输出比我预期的值多 1。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55540142/