C语言中自增的疑惑
2011-09-14 11:43 MichaelYin 阅读(1452) 评论(19) 编辑 收藏 举报由于要准备笔试,所以捡起了好久不看的C语言,运算符优先级真的是挺蛋疼的,这不,今天在那折腾的时候就被一个问题给纠结住了,自己不能解释这种现象,就发到园子里面请教一下大家了。
int y,r; y=3; r=0; r= 2*y+(++y); printf("%d",r); return 0;
代码其实很简单,我写这个代码主要是想知道++y后的值对表达式中的其他地方的y是不是有影响的,这个代码在CodeBlock中执行的结果是10,由于(++y)其实的结果是4,所以前面用来计算的y的值其实是3,到这里,我就以为++y的值在y自增后在别处是没有影响的。
但是,诡异的事情接下来发生了
我将2*y改成了y
int y,r; y=3; r=0; r= y+(++y); printf("%d",r); return 0;
运行的结果竟然是8,这下我就觉得很纠结了,就没了一个乘法,这地方就成了这样么?我觉得这个地方如果和前面要统一的话就应该输出7才对,后来在C#中写了相似的代码,结果是7,但是对于C这个地方的处理确实很疑惑,也发在园子里面看看大家对此的看法。
我的环境是Xp CodeBlock10