(++i)+(++i)为什么会多一个

lsy010927 2017-11-14 07:08:47
我用vc6.0运行之后的结果为什么是6不是5???

#include<stdio.h>
main()
{
int i=1;
printf("i=%d",(++i)+(++i));
}
...全文
146 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
幻想0051 2017-11-16
第一次 ++i 的时候 i=2了 第二次 ++i 的时候 i=3了 然后两个i相加,这个时候取的值就是改过之后的3, 3+3=6. 感觉有些编译器是不一样的
  • 打赏
  • 举报
回复
destory27 2017-11-15
(++i)+(++i) i= 2 i= 3 3 + 3
  • 打赏
  • 举报
回复
CT8100 2017-11-15
先做括号里面的运算,最后变成3+3
  • 打赏
  • 举报
回复
AI_channel 2017-11-15
未定义顺序,先执行了两次++i!
  • 打赏
  • 举报
回复
codedoctor 2017-11-15
这个和编译器相关,不同编译器的结果都可能不同。属于未定义行为,不要再同一行代码中使用多次++
  • 打赏
  • 举报
回复
赵4老师 2017-11-15
  • 打赏
  • 举报
回复
paschen 2017-11-14
顺序点问题,未定义行为 关于C,C++表达式求值顺序 http://bbs.csdn.net/topics/370153775
  • 打赏
  • 举报
回复
自信男孩 2017-11-14
有歧义性,类似这样的问题有很多,跟编译器有关系,不建议深究,也不建议写这样的代码。比如a = i+++i+++i++;
  • 打赏
  • 举报
回复
das白 2017-11-14
先执行两次++ 再x2
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2017-11-14 07:08
社区公告
暂无公告