C语言问题,这个是怎么得出这个结果的?

为什么这个结果为57,57,啊?

#include <stdio.h>
int convert(int* data)
{
return (*data) ++;
}
main( )
{
int data = 56;

convert(&data);

printf("%d,", data); 
data = convert(&data);
printf("%d,\n", data);
}

第一次输出的不应该是56吗?第二次是57吗?(*data) ++这个到底是怎么输出的,如果说第一次就+1的话为什么第二次不+1啊?求大神教一下

convert(&data);在第一次输出前就调用了,让data++了。
第二次也++了,但是又被返回值改写回了原来的值

data = convert(&data);修改为
convert(&data);
就能看到58

  • 首先,第一遍 传了 data的地址, convert 函数里 处理 最后 值变为 57
  • 第二次调用,data=57 传进去, 因为 ++在后,所以返回的还是 57,然后主函数赋值给data,就还是 57
不知道你这个问题是否已经解决, 如果还没有解决的话:

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