学习C语言函数内容时的一个疑惑

学习C语言课程中遇到的示例,不明白为什么会输出1

#include<stdio.h>

int MyF(int a, int b)
{
    int c;
    if (a > b)
    {
        c = 1;
    }
    else if(a == b)
    {
        c = 0;
    }
    else
    {
        c = -1;
    }
    return c;
}
int main()
{
    /*int d,e, f;
    scanf_s("%d,%d",&e,&f);
    d =    Findmin(e,f);
    printf("%d", d);*/
    int i = 2;
    int p;
    p = MyF(i, i++);
    printf("%d", p);

    return 0;

在调试时显示a=3,b=2,实在不明白为什么,求解答

p = MyF(i, i++);
函数中参数的求值顺序是未定义行为,不同编译器不一样,所以这个函数的调用结果无法预测。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^