请教一道华为笔试题

xingyulover 2010-02-16 09:46:02
设int arr[]={6,7,8,9,10};

int *ptr=arr;

*(ptr++)+=123;

printf("%d,%d",*ptr,*(++ptr));

答案为什么是:8,8

先祝大家新年快乐!
...全文
13935 214 打赏 收藏 转发到动态 举报
写回复
用AI写文章
214 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-10-22
  • 打赏
  • 举报
回复
ptr, ++ptr,求值顺序是不定的。。
《c语言程序设计》中,好像第二章就给出了说明。
bobo1269219446 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 icedoom 的回复:]
这个是比较绕的一个问题,主要考验的是i++ 和++i :

我们逐个分析:
int arr[]={6,7,8,9,10};

int *ptr=arr;
//这里ptr是数组的首地址。

*(ptr++)+=123;
//这个我们将之拆分
//1. 首先是 ptr++, 这个时候重点看到是后++,也就是说返回的ptr还是原来的ptr的值,也就是arr的首地址。
//那么这句话……
[/Quote]


是啊!但面试题专门考这些。
shaozg168 2011-09-09
  • 打赏
  • 举报
回复
悲剧啊。让我也错了。
ai_kirk 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yitaohust 的回复:]
恩,这个题考的关键估计就是printf的运算顺序,正如1楼说所。
printf的参数,函数printf从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有从右边开始处理的
[/Quote]
赞同
hetao220284 2010-05-21
  • 打赏
  • 举报
回复
记住了 下次能记住
zhumengjhzs 2010-03-13
  • 打赏
  • 举报
回复
这是与编译器有关的哈,对于printf()函数求值顺序不确定啊


think_1987 2010-03-08
  • 打赏
  • 举报
回复
新手来学习了,呵呵,好激烈啊.
枫。晨夕 2010-03-08
  • 打赏
  • 举报
回复
这种代码,在华为自己的C++编码规范中是禁止的
Paradin 2010-03-08
  • 打赏
  • 举报
回复
既然说了结果本来就是要你分析编译器的行为
albon_arith 2010-03-08
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
mzxniasf 2010-03-07
  • 打赏
  • 举报
回复
引用 145 楼 zhao4zhong1 的回复:
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。

想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!


确实啊,要相对C有真正深入的了解,是绝对要深入到汇编层次的。
大牛~Daniel 2010-03-07
  • 打赏
  • 举报
回复
mark 大家解释的非常好 哈哈
xiaoxiangmao 2010-03-07
  • 打赏
  • 举报
回复
这题出的真难,学习了啊!!!
niu05500230 2010-03-07
  • 打赏
  • 举报
回复
未定义行为~~~~~~~~~~~~~~
whulyd 2010-03-07
  • 打赏
  • 举报
回复
培养你成为代码机器,代码机器
xingyulover 2010-03-07
  • 打赏
  • 举报
回复
这么晚了,还有人没有休息啊。
zhq442577358 2010-03-07
  • 打赏
  • 举报
回复
什么东西,没看懂!!!
liudanking 2010-03-07
  • 打赏
  • 举报
回复
引用 1 楼 yzx714 的回复:
int arr[]={6,7,8,9,10};

int *ptr=arr;//现在ptr指向6

*(ptr++)+=123;//现在ptr指向7,第一个元素变为129

printf("%d,%d",*ptr,*(++ptr)); //考虑从右往左计算,先是*(++ptr),现在ptr指向8,然后*ptr也是8,输出8,8

同意。
xinyonda 2010-03-07
  • 打赏
  • 举报
回复
围观中,呵呵,这种题目多看看帖就好了
crystal_dark 2010-03-06
  • 打赏
  • 举报
回复
学习
加载更多回复(190)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧