若有以下定义和语句: int a[4]={1,3,5,7},*p; p=&a[2]; 则*--p的值是【 】

求高手解答

结果是3。原理如下:
--是自减运算符,也就是说--p可以等同于p=p-1;

因为p是地址,所以p的自减运算是相当于往前移一个位置,
原来p是指向a[2],往前移一个位置,p就指向了a[1],所以*--p就等于3。

最后再给初学者一个忠告,C的运算符是比较复杂的,而且不同的编译系统对源程序的解释也不尽相同,所以,建议不要在这种问题上钻牛角尖。对不确定的东西,分多句写,或者加上括号,否则很容易被带沟里去。比如上面的语句,完成可以写在*(--p);或者分两句写成p--;*p这样子。如果有人专门考别人这些东西,纯属是显摆,不用理他。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-10
值是3,a[2]=5,前--后就是3了
第2个回答  2014-04-10
同学,其实你自己运行遍就知道了 是 3!
相似回答