这个怎么算的????

cs163123 2008-10-01 03:30:28
看到别人提问的 我不咋明白
int i=3;
cout <<(++i)+(++i)+(++i) <<endl;

第一次++i i不就是4 依次为5 6 最后不就是15啊 怎么会输出16?

我不是钻牛角尖 搞不明白很不爽
...全文
175 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohu81 2008-10-02
  • 打赏
  • 举报
回复
vs2005下
int i=3;
cout < <(++i)+(++i)+(++i) < <endl;
输出结果是 18
微甜呼吸 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Flyinsky1 的回复:]
引用楼主 cs163123 的帖子:
....

我不是钻牛角尖 搞不明白很不爽

就是钻牛角尖.........
[/Quote]


钻了牛角尖还死嘴硬,哈哈!~~
lizhaohu 2008-10-01
  • 打赏
  • 举报
回复
题没有意思
jia_xiaoxin 2008-10-01
  • 打赏
  • 举报
回复
adriano119 2008-10-01
  • 打赏
  • 举报
回复
搞不明白很不爽就是钻牛角尖的症状了
知道跟编译器有关就是了
碰到多个++时要单独写出来
dengyi001 2008-10-01
  • 打赏
  • 举报
回复
结果应该是:5+5+6
chlaws 2008-10-01
  • 打赏
  • 举报
回复
没任何意义
Gump_BlueSky 2008-10-01
  • 打赏
  • 举报
回复
这个问题好像我们上课的时候老师也问过我们,不过有好多中种版本的答案。其实结果如何要看编译器
机智的呆呆 2008-10-01
  • 打赏
  • 举报
回复
楼主反汇编自己看看吧,真的这样的问题确实没意思~~~~
fdg个sggggg 2008-10-01
  • 打赏
  • 举报
回复
没什么意义。
zgjxwl 2008-10-01
  • 打赏
  • 举报
回复
下个电子版,看The C++ programming language里的求值顺序那里

那里明确的告诉你,求值顺序未定义,标准明确规定,不要在同一条语句多次修改同一

变量的值,因此,编译器也不知道按什么顺序来执行,对于不同的编译器,可能有不同的行为

也就是说,在不同的编译器下,可能会得到不同的结果,所以研究这种未定义的东西它是没有意义的,不要依赖于未定义行为

http://download.csdn.net/source/423151
yuegui2 2008-10-01
  • 打赏
  • 举报
回复
估计只有考试的时候会考这些问题罢了
K行天下 2008-10-01
  • 打赏
  • 举报
回复
这个与编译器有关
cs163123 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Flyinsky1 的回复:]
引用楼主 cs163123 的帖子:
....

我不是钻牛角尖 搞不明白很不爽

就是钻牛角尖.........
[/Quote]
。。。。 我自己心里明白是不是钻牛角尖就可以啦
Flyinsky1 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 cs163123 的帖子:]
....

我不是钻牛角尖  搞不明白很不爽
[/Quote]
就是钻牛角尖.........
baihacker 2008-10-01
  • 打赏
  • 举报
回复
不要问这种问题了.
和编译器及平台有关.

如果有100个寄存器就可能保存九十几个临时值,并且假设这些值的来源没有变化...
所以一加就会出问题.

VC6是用了ECX 和EDX
VC8是只用了一个

楼主不用深究这些了.

在应用在绝对不能写这样的代码!!!

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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