一个关于自增运算符的题目,请大家帮我解惑

grimmchen 2010-10-14 09:16:00

main()
{
int x=20,y=35;
x=y++ + x++;
y= ++y + ++x;
printf(“%d%dn”,x,y);
}

答案是5794
我想问一下为什么第一个x算出来的是57啊
现在对于变量越来越混了
...全文
126 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
feitianliuyun 2010-10-14
  • 打赏
  • 举报
回复
这种题目没有标准的答案,随编译器的不同结果也不同,别研究它了。没有意义。
zzjniatnh 2010-10-14
  • 打赏
  • 举报
回复
太有才了,学习中
小魔菇 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 s_zxing 的回复:]

先算x++(得21),然后再加上y++(得36),结果不是57是什么呢。
这个就是一个运算符的问题,优先级以及自右向左运算……
[/Quote]

右边的表达式 先算x还是先算y 这个是由有编译器决定的
并非绝对的自右向左运算
fibbery 2010-10-14
  • 打赏
  • 举报
回复
这种题对你将来开发一点益处都没有,何苦折磨自己呢?
S_zxing 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 s_zxing 的回复:]

先算x++(得21),然后再加上y++(得36),结果不是57是什么呢。
这个就是一个运算符的问题,优先级以及自右向左运算……
[/Quote]
嗯…… 我什么都没说,汗……
S_zxing 2010-10-14
  • 打赏
  • 举报
回复
先算x++(得21),然后再加上y++(得36),结果不是57是什么呢。
这个就是一个运算符的问题,优先级以及自右向左运算……
小魔菇 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 eclipse_2 的回复:]

1、x=y++ + x++;
x = 35 + 20 = 55 然后x执行++操作 56 y执行++操作 36

2、y= ++y + ++x;
y先++ 37 x也++ 57
y = 37+57 = 95
[/Quote]
写错了
y = 37+57 = 94
小魔菇 2010-10-14
  • 打赏
  • 举报
回复
1、x=y++ + x++;
x = 35 + 20 = 55 然后x执行++操作 56 y执行++操作 36

2、y= ++y + ++x;
y先++ 37 x也++ 57
y = 37+57 = 95

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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