djdj 发表于 2017-5-16 21:48:46

为什么输出的结果是这个大家帮忙看看

#include<stdio.h>
void main()
{
        int a[]={1,2,3,4,5,6};
        int *p;
        p=a;
        printf("%5d%5d%5d%5d\n",*p,*(++p),*++p,*(p--));
        printf("%5d%5d\n",*p,*(a+2));
}
为什么输出的结果是这个,好奇怪,求指导。[

超凡天赐 发表于 2017-5-16 22:36:44

++p,p--,前面那个先自加后使用,后面那个先使用后自减。*(++p)等价于*++p。

超凡天赐 发表于 2017-5-16 23:19:43

本帖最后由 超凡天赐 于 2017-5-16 23:26 编辑

我突然想起来了一个问题{:10_285:},有一些编译器从左向右,有一些编译器从右向左。你的是自右向左的{:10_266:}
关于某些编译器为什么是从右向左处理参数的理解-shaohui973-ChinaUnix博客 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23782786&id=4015737
页: [1]
查看完整版本: 为什么输出的结果是这个大家帮忙看看