为什么a=6啊?

davidstack 2009-11-18 11:34:35
int j=1;
int a=(++j)+(++j);
为什么a=6啊?
...全文
171 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
王旺旺旺 2009-11-19
  • 打赏
  • 举报
回复
他明白了,不知道你明白了没有?
dskit 2009-11-19
  • 打赏
  • 举报
回复
搞清楚i++ 和 ++i的区别(编译器实现级别上的区别),你就知道了
白头老汉 2009-11-19
  • 打赏
  • 举报
回复
编码规范要求,不要把++语句和其他语句放在一起。
只这么单独的用
a++;
nicky_zs 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hpsmouse 的回复:]
准备围观大牛们的愤怒之语~~
[/Quote]

这个例子不同于滥用后置++的例子。
滥用后置++的确没有深究的必要,但是这个例子中,只使用了前置++。
这种情况是与编译器无关的,结果只能是6。
yorkzjy 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sciencesuneast 的回复:]
运行顺序如下:
++j  此时  j=++1=2
++j  此时  j=++2=3
j+j 即  3+3=6

不知道楼主明白没有...
[/Quote]

你以为你很牛13吗?
zgjxwl 2009-11-19
  • 打赏
  • 举报
回复
标准规定,求值顺序未定义,具体依赖编译器。
mmilmf 2009-11-19
  • 打赏
  • 举报
回复
今天第二次看到这个问题了,
这样的问题是和编译器有关的,不同的编译器结果可能不同的,搞懂了这个,下次换编译器之后又要问的。但是想知道为什么,只能涉及具体的编译器了...
huqinglu123 2009-11-18
  • 打赏
  • 举报
回复
如果等于6 那就是2楼的过程
[Quote=引用 2 楼 sciencesuneast 的回复:]
运行顺序如下:
++j  此时  j=++1=2
++j  此时  j=++2=3
j+j 即  3+3=6

不知道楼主明白没有...
[/Quote]
其实我觉得等于5或许更好,就像5楼的一样
fengyihua19871104 2009-11-18
  • 打赏
  • 举报
回复
int j=1;
int a=(++j)+(++j);

首先(++j)=2
然后j=2;
再(++j)=3;
所以a=5;
这个要看不同的编译器了
sciencesuneast 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hpsmouse 的回复:]
准备围观大牛们的愤怒之语~~
[/Quote]

愤怒吗...

尊重一下新手吧...
sciencesuneast 2009-11-18
  • 打赏
  • 举报
回复
运行顺序如下:
++j 此时 j=++1=2
++j 此时 j=++2=3
j+j 即 3+3=6

不知道楼主明白没有...
2009-11-18
  • 打赏
  • 举报
回复
准备围观大牛们的愤怒之语~~

64,648

社区成员

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

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