为什么i++后不是自增了吗?


#include<stdio.h> 
 int main()
{ 
   int f(int a, int b);
   int i=2,p;
    p=f(i,++i);     
    printf("%d",p);
}
int f(int a, int b)
{   int c;
    if(a>b)  c=1;
    else if(a==b)  c=0;
    else c=-1;
    return(c);
}
******************************

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/728533554836160.png "#left")



```c
#include<stdio.h>
int main()
{   
    int f(int a, int b);
    int i=2,p;
    p=f(i,i++);
    printf("%d",p);
}
int f(int a, int b)
{   int c;
    if(a>b)c=1;
    else if(a==b)c=0;
    else c=-1;
    return(c);
}

img

++i 是先自增后赋值,i++ 是先赋值后自增
i=1; a=i++; ==》 a=1
i=1; a=++i; ==》 a=2

这是一个undefined behavior(未定义的行为),不同编译器的结果可能不同。尽量不要在函数传参的时候使用++
你可以看看这篇文章 https://blog.csdn.net/a26013/article/details/121377828?utm_source=app&app_version=4.19.1&code=app_1562916241&uLinkId=usr1mkqgl919blen