一道简单的c语言题。问一下结果是怎么出来的。
发布网友
发布时间:2022-12-03 09:55
我来回答
共1个回答
热心网友
时间:2023-11-17 19:32
输出结果应该是:
i=5
i=2
i=2
i=0
i=2
说明如下:
int i=0;//这里声明了一个全局变量,但是下面函数中有同名局部变量,所以实际没什么作用
main()
{
int i=5;
reset(i/2);//这个函数中并没有改变i的值,所以运行后i还是5
printf("i=%d\n",i);//所以这里打印i=5
reset(i=i/2);//这个参数中有赋值语句,所以会影响i的值,i的值是5/2=2(取整)
printf("i=%d\n",i);//所以这里打印i=2
reset(i/2);//这个函数同样没有改变i的值,所以运行后i仍然是2
printf("i=%d\n",i);//所以这里打印i=2
workover(i);//这个函数中有个打印语句,
printf("i=%d\n",i);//这里i的值还是2,所以还是打印i=2
}
workover(int i)
{
i=(i%i)*((i*i)/(2*i)+4);//由于i对i取余一定是0,所以这个表达式的值就是0,i的值也就是0
printf("i=%d\n",i);//所以这里打印i=0
return(i);
}
reset(int i)
{
i=i<=2?5:0;//这个函数中对i的值的操作都是在这个子函数的局部生效,所以对主函数中的i的值并没有影响
return(i);
}