++、--运算

Ubunman 2012-09-02 06:56:48

#include "stdio.h"
#include "math.h"
int main()
{
int x=4,y=25,z=2;
z=(--y/++x)*z--;
printf("%d%d%d",x,y,z);
return 0;

}
输出是:5247

#include "stdio.h"
#include "math.h"
int main()
{
int x=4,y=25,z=2,t;
t=z=(--y/++x)*z--;
printf("%d%d%d%d",t,x,y,z);
return 0;

}
输出是:85247

为什么多赋值一次就+1了呢?
...全文
116 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MaGic_VV311 2012-09-02
  • 打赏
  • 举报
回复
是t=z=(--y/++x)*(z--)
[Quote=引用 6 楼 的回复:]
我知道++、--要根据环境上下文中,

恩,--是自右至左

t=z=((--y/++x)*z)--

是这样吧
[/Quote]
Ubunman 2012-09-02
  • 打赏
  • 举报
回复

先计算,再自增减,
Ubunman 2012-09-02
  • 打赏
  • 举报
回复

我知道++、--要根据环境上下文中,

恩,--是自右至左

t=z=((--y/++x)*z)--

是这样吧
MaGic_VV311 2012-09-02
  • 打赏
  • 举报
回复
这个你可以这么了解,
在基于表达式的运算中,可分为“计算”和“自增减”两部分,++i是先自增后计算
i++是表达式“计算”结束后才“自增减”。
t=z=(--y/++x)*z--;
这个表达式的“计算部分”结束后,t=z=8,然后开始z--进行“自增减”,所以t=8,z=7.
龙泉剑 2012-09-02
  • 打赏
  • 举报
回复
相等于,z=8;,t=z--;所以运算后z=7,t=8;
wizard_tiger 2012-09-02
  • 打赏
  • 举报
回复
这个结果依赖于编译器,不同的编译器会有不同的结果。
iamnobody 2012-09-02
  • 打赏
  • 举报
回复
看顶置的帖子, 我都懒得复制链接了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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