int x=0,y=0; while(x<15) y++,x+=++y; printf("%d,%d",y,x);

 我来答
若苒余树
2021-11-25
知道答主
回答量:4
采纳率:100%
帮助的人:1544
展开全部
因为y++,x+=++y;是逗号表达式,所以最终值是x+=++y;还有x+=++y等价于x=x+(++y)

0<15 y=1,x=0+2;//x=2,y=2
2<15 y=3,x=2+4;//x=6,y=4
6<15 y=5,x=6+6;//x=12,y=6
12<15 y=7,x=12+8;//x=20,y=8
20<15 不成立
输出:y=8,x=20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贰菲守丙
2020-05-04 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:33%
帮助的人:984万
展开全部
y++会先使用y值再自加1,++y会先加1再使用y值;第一次运算时,y++;此时y=1;x+=++y;时是在y=1的基础上再加1;所以x=2.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
芮秀英桑画
2019-05-21 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:30%
帮助的人:793万
展开全部
http://zhidao.baidu.com/question/44413947.html你看一下这个回答吧,关于逗号运算符,这里不是一个表达式,而是两个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落冰昆09
2019-09-07 · TA获得超过3.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:26%
帮助的人:639万
展开全部
在真实的C标准中像y++和++y这样的运算是未定义的,和编译器有关系。
但一般认为y++会先使用y值再自加1,++y会先加1再使用y值;
第一次运算时,y++;此时y=1;
x+=++y;时是在y=1的基础上再加1;
所以x=2;
在真实的工作环境中是不允许出现类似x
=
++y;或x
=
y++;这种形式的赋值的;
因为当编译环境不同时可能会出现不可预料的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式