下面程序段的运行结果是: for(y=1;y<10;) y=((x=3*y,x+1),x-1); printf(“x=%d,y=%d“,x,y); A)x=27,y=27 B)x=12,y=

下面程序段的运行结果是: for(y=1;y<10;) y=((x=3*y,x+1),x-1); printf(“x=%d,y=%d”,x,y); A)x=27,y=27 B)x=12,y=13 C)x=15,y=14 D)x=y=27

逗号表达式注意两个bai基本知识:
1.
逗号表达式的运算i顺序是从左向右运算
2.
逗号表达式的值取逗号中最右表达式的值
第一个循环:(x=0,y=1)
现在看(x=3y,x+1),x-1这个逗号表达式,
首先对于(x=3
y,x+1)和x-1来说,按照从左向右运算先计算(x=3y,x+1)
(x=3
y,x+1)
这个逗号表达式从左向右运算先计算x=3y,这是个赋值语句,处理x=31=3
再计算x+1,此时x=3,所以x+1=4,但是注意这个表达式并没有对a赋值,仅仅是一个乘法运算
根据逗号表达式的值取逗号中最右表达式的值的原则,(x=3y,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
循环结束,按整型输出结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值