for(y=1;y<10;) y=((x=3*y,x+1),x-1) printf("x=%dy=%d",x,y); 请问为什么x=15y=14

kaiyuankj
推荐于2018-03-11 · TA获得超过165个赞
知道答主
回答量:50
采纳率:0%
帮助的人:33.4万
展开全部
逗号表达式注意两个基本知识:
1. 逗号表达式的运算顺序是从左向右运算
2. 逗号表达式的值取逗号中最右表达式的值

第一个循环:(x=0,y=1)
现在看(x=3*y,x+1),x-1这个逗号表达式,
首先对于(x=3*y,x+1)和x-1来说,按照从左向右运算先计算(x=3*y,x+1)

(x=3*y,x+1)
这个逗号表达式从左向右运算先计算x=3*y,这是个赋值语句,处理x=3*1=3
再计算x+1,此时x=3,所以x+1=4,但是注意这个表达式并没有对a赋值,仅仅是一个乘法运算
根据逗号表达式的值取逗号中最右表达式的值的原则,(x=3*y,x+1)的值为4

再看x-1,
之前运算(x=3*y,x+1)时,x已经被赋值为3,所以这里3-1=2
所以x-1这个表达式的值为2

再根据逗号表达式的值取逗号中最右表达式的值的原则,
表达式((x=3*y,x+1),x-1) 的值即为x-1的值,也就等于2了

第一次循环结束,得到结果:x=3,y=2

第二次循环(x=3,y=2)
得到结果x=6,y=5
第二次循环(x=6,y=5)
得到结果x=15,y=14

循环结束,按整型输出结果
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式