请教 (++i) 的问题

cxmyx 2003-10-16 03:59:43
请教:
...
int i=3;
i=(++i)+(++i);
...

为什么i=10 ? ??

如果i=(++i)+(++i)+(++i);

i=16 ???

请高手指教!!!!!

...全文
32 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudong001 2003-10-16
  • 打赏
  • 举报
回复
赞同liansdan(如果你能梦见我)的意见!
无名2018 2003-10-16
  • 打赏
  • 举报
回复
include <iostream>
int main()
{
int i=9;
cout<<i;//9
cout<<i++;//9
cout<<i;//10
cout<<i;//11
}
Meigen 2003-10-16
  • 打赏
  • 举报
回复
废帖!

删!!
挺拔的劲松 2003-10-16
  • 打赏
  • 举报
回复
这要看你用什么编译器了。
在TC2下结果为:
5+5=10
6+6+6=18
在VC下结果为:
5+5=10
(5+5)+ (++i)=10+6=16
chenxiangyun 2003-10-16
  • 打赏
  • 举报
回复
第一个因为(++i)是行自增,在执行
所以第一个(++i)=4然后在执行第二个(++i)就应该等于5.所以i=5,(++i)+(++i);就当于两个相加等于10
sharkhuang 2003-10-16
  • 打赏
  • 举报
回复
讨论太多了!这样帖子!没意思了!呵呵!
斑竹应该 想个好方法解决这样的问题哦!
TodaySunday 2003-10-16
  • 打赏
  • 举报
回复
第一个 ++i 让 i=4
第2个 ++i 让 i=5,

这时i=5,因为++i是返回i本身,所以 ++i +(++i)=10,并给一个临时对象储存
w_flyer 2003-10-16
  • 打赏
  • 举报
回复
像这样的运算跟编译器有关
pengliyong 2003-10-16
  • 打赏
  • 举报
回复
int i=3;
i=(i=4)+(++i);
i=(i=5)+(i=5);
注意i在两个括号内指向一个变量(一个寄存器中),无论如何两个括号内的i值是相等的。
CountFloyd 2003-10-16
  • 打赏
  • 举报
回复
对。
编译器先对表达式进行扫描。发现2个++i,所以,i=5
结果就是10了。
Hot_Forever 2003-10-16
  • 打赏
  • 举报
回复
根据编译器不同结果也不相同
这里给出VC下的结果
i=(++i)+(++i),++i优先级更高,所以先执行2个++i,然后再相加,10

这时候编译器认为是前2者相加比后面的++i更优先,至于为什么,只能去问编译器的设计者了
i=(++i)+(++i)+(++i) =(5+5)+(++i)=10+6=16
daizh 2003-10-16
  • 打赏
  • 举报
回复
看看以前的帖子吧。
liansdan 2003-10-16
  • 打赏
  • 举报
回复

这种问题没有什么实际的意义,你没有必要在这种问题上钻牛角尖,浪费太多的时间,要学的东西实在太多,我以前也走不少这样的弯路,希望你能就此提高对学习的认识,我没有批评的意思希望你不要介意!!!
TodaySunday 2003-10-16
  • 打赏
  • 举报
回复
第一个应该是9吧
第2 个应该是5吧
你是不是用的盗版书

69,371

社区成员

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

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