可以分析下下面的代码结果吗?最好是有理由


#include<stdio.h>
void fun(int *n)
{
    while((*n)--);
    printf("%d",*n);
}
int main()
{
 int a=10;
 fun(&a);
 return 0;
}

#include<stdio.h>
/*** 自定义函数
    函数名为fun
    函数形参为int型指针 
***/
void fun(int *n)
{
    //while循环先做“解引用”,得到n所指的值,判断是否为真,然后--
    //当n--到1时,程序判断为*n==1为真,然后--,即*n=0;下一次循环时*n==0,循环结束,但是*n--后*n=-1; 
    while((*n)--);
    printf("%d",*n);
}
/*** 主函数 ***/
int main()
{
    //定义变量a并且初始化为10 
    int a=10;
    //调用构造函数 
    fun(&a);
    //程序结束 
    return 0;
}

while一直到n为0才停止循环
而--操作在判断之后,停止循环后--还要执行一遍,*n就0-1=-1