求C语言问题~~~

来源:百度知道 编辑:UC知道 时间:2024/05/07 07:56:53
下列程序的输出结果是()

void fun(int *n)
{ while( (*n)--);
printf(“%d”,++(*n));
}
main()
{ int a=100;
fun(&a);
}

请讲明原因~
我要的是过程~~~~~

答案为0
我运行过了
因为while( (*n)--); 循环后面有个;
所以这个循环其实只是进行*n也就是a的自减
当a =0时循环结束
但a 还要自减一次
那么循环完后
a=-1
那么输出时a再自加
在输出自然也就是0啦

void fun(int *n) //n=&a; 所以*n=a;把下面的*n替换成a即可
{ while( (*n)--);
printf(“%d”,++(*n));
}
main()
{ int a=100;
fun(&a); //把a的地址赋给fun的参int *n; 那么n=&a;
}

101。++放前面是先加完再执行printf命令的,而--放a的后面个人觉得是先完成while语句(到while的}结束)才减,这时已经printf完了,所以打出来的是还没--的101
(楼上的还是没说结果)