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

我认为是答案错了。

热度:60   发布时间:2006-03-08 21:12:00.0
应该是21,可能是编译器问题。用VC

[此贴子已经被作者于2006-3-8 21:33:48编辑过]


----------------解决方案--------------------------------------------------------
我用TC ,得出的结果是21
----------------解决方案--------------------------------------------------------
以下是引用showna在2006-3-8 22:54:00的发言:
我用TC ,得出的结果是21

不会吧,我用TC2.0,和TC3.0的结果都是20


----------------解决方案--------------------------------------------------------
再重复一次,答案没错,是算符的优先级的问题.因为单目运算符的级别比双目的高.因此先进行自增运算,然后是双目的加法;
7+7+7=21
----------------解决方案--------------------------------------------------------
这个问题怎么还在讨论啊,这是根据不同的编译器而定的,

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

支持楼上的小妹妹


----------------解决方案--------------------------------------------------------
顺序

1、(++i) ->a

2、(++i) ->b

3、(i++) ->c

4、k=a+b+c

----------------解决方案--------------------------------------------------------
以下是引用DaytonaUSA在2006-3-9 1:11:00的发言:
顺序

1、(++i) ->a

2、(++i) ->b

3、(i++) ->c

4、k=a+b+c


----------------解决方案--------------------------------------------------------
19楼的,你说的我验证了.是这样的情况.我分析是顺序点的问题,因为你用 printf时没有顺序点";"因此编译器并不是一定要在表达式完前执行全部的自增自减运算,这个要看不同编译器而定了.而如果定义t=(++i)+(++i)+(i++);在顺序点前一定要执行全部的算符,因此
我觉得如果是输出变量t的值的话,不管什么编译器(同级的从左或从右开始算)结果都应该是21.但是应该尽量避免出现printf("%d",(++i)+(++i)+(i++));这样的语句.
----------------解决方案--------------------------------------------------------
这样的题太无聊了.
回字有4种写法你知道吗

[此贴子已经被作者于2006-3-9 16:01:33编辑过]


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