c语言问题 为什么答案是8,6,6

以下程序的输出结果是( 31)
main()
{ int *p;
int a[5]={2, 6, 8, 7, 1};
p=a;
printf("%d %d %d\n", a[p-a], *p++, *++p);
}

调用printf函数时,实参是按从右往左的顺序压入栈的。

因此,
先计算*++p,先令p指向下一个元素a[1],再取出此元素的值,传递6;

再计算*p++,传递6后p指向a[2];

最后计算a[p-a],因为p-a等于2,所以传递a[2](8)。

所以输出8 6 6。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-24
第一个\156, 156对应8进制是110,转义字符对应n,
第二个\o156, \o15无对应的转义字符,输出空,所以输出6
第三个\015对应8进制是13,转义字符对应回车,不能输出,所以还是输出6

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网