当前位置: 代码迷 >> C语言 >> 我认为是答案错了。
  详细解决方案

我认为是答案错了。

热度:113   发布时间:2006-03-08 17:38:00.0
以下是引用feng1256在2006-3-7 1:04:00的发言:

i 先做两次自增为7 3个7是21 然后再做一次自增为8

同意!


----------------解决方案--------------------------------------------------------
答案不唯一,不用自责,是出题目的老师有问题,你可以去和你们老师说,问他到底有没有研究过这种题目
----------------解决方案--------------------------------------------------------
K=7+7+7=21;
I=8;
k=(++i)+(++i)+(i++)
先进行++i,i增到6,
再++i,i增到7,
i++,i先附值再增到8
结果K=21;
----------------解决方案--------------------------------------------------------
楼主应该是对的。
i++是先运算后自增.
++i是先自增后运算.

----------------解决方案--------------------------------------------------------

大家都不要给错误的结论了
都说了答案不唯一,各个编译器有不同的结果。


----------------解决方案--------------------------------------------------------

我认为你的答案是正确的啊。


----------------解决方案--------------------------------------------------------
建议斑竹出来给个正确的说法,我觉得这种胡乱推测对新手学习很不利。
----------------解决方案--------------------------------------------------------
单目运算符的优先级高与加法运算符
----------------解决方案--------------------------------------------------------
我认为都不是完全正确。
int i=5,k;
k=(++i)+(++i)+(i++);
printf("%d",k);结果是21。可
int i=5;
printf("%d",(++i)+(++i)+(i++));
确是20。这怎么解释啊?


----------------解决方案--------------------------------------------------------

在一个顺序点发生时,对于++和--这种符号,C编译器可以选择先计算哪个参数的值,这个自由度提高了编译器的效率,但像上面这个例子,就会带来麻烦,所以要避免这种问题。


----------------解决方案--------------------------------------------------------
  相关解决方案