当一个算术表达式中有一个变量的前加或者后加,用到的这个变量是原值还是加后的值?

一叶孤星坠空城 2014-01-09 10:55:42
例如:
int x=1,y=3,z=2;
System.out.println(y--/++x); // 输出是 1

System.out.println((z++)*3); // 输出是6

我知道前加和后加在给另一变量赋值时的区别,前加是使用加1后的值,后加是使用原值

第一句y--后减语句为什么不是使用的原值3?
第二句z++后加是使用的原值2

能告诉下编译器处理这个问题的原理吗?
...全文
65 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2014-01-09
  • 打赏
  • 举报
回复
发明++不是让这么用的
漫步者、 2014-01-09
  • 打赏
  • 举报
回复
System.out.println(y--/++x); // 输出是 1 先把y取出来,3,再取出++x也就是2了 -》3/2 = 1,然后再y = y - 1难道不对么? System.out.println((z++)*3); // 输出是6 选取z,2,再*3 -》2*3 = 6难道不对么?,再z = z + 1
zhuobattle 2014-01-09
  • 打赏
  • 举报
回复
你这输出是java函数吧? 不过我只从C++的编译器来讲,你y--/++x,使用的也是y之前的值,至于为什么为变成1, 这是因为3/2,整数相除不会有小数,小数直接去掉了, 不信你可以这样:

int x=1,y=3,z=2;
printf("%f\n", ((double)y--/++x));      // 输出是1.500000


64,646

社区成员

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

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