有关于C语言的一道小问题,有关printf函数的的原理

下面的程序输出结果是多少?

#include<stdio.h>

main()
{
    int b = 3;
    int arr[] = {6,7,8,9,10};
    int *ptr = arr;
    *(ptr++)+=123;              
        printf("%d,%d\n",*ptr,*(++ptr));  
}

还有就是为何我Mac下的gcc和Linux的gcc出现的结果不一样???

阅读 4.3k
2 个回答

printf("%d,%d\n",ptr,(++ptr));
先执行ptr,还是先执行(++ptr),取决与程序指定的调用惯例
调用惯例约定了函数参数从左至右压栈,还是从右至左压栈

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏