int x=0,y=0; while(x<15) y++,x+=++y; printf("%d,%d",y,x);
4个回答
展开全部
因为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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
y++会先使用y值再自加1,++y会先加1再使用y值;第一次运算时,y++;此时y=1;x+=++y;时是在y=1的基础上再加1;所以x=2.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
http://zhidao.baidu.com/question/44413947.html你看一下这个回答吧,关于逗号运算符,这里不是一个表达式,而是两个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在真实的C标准中像y++和++y这样的运算是未定义的,和编译器有关系。
但一般认为y++会先使用y值再自加1,++y会先加1再使用y值;
第一次运算时,y++;此时y=1;
x+=++y;时是在y=1的基础上再加1;
所以x=2;
在真实的工作环境中是不允许出现类似x
=
++y;或x
=
y++;这种形式的赋值的;
因为当编译环境不同时可能会出现不可预料的问题。
但一般认为y++会先使用y值再自加1,++y会先加1再使用y值;
第一次运算时,y++;此时y=1;
x+=++y;时是在y=1的基础上再加1;
所以x=2;
在真实的工作环境中是不允许出现类似x
=
++y;或x
=
y++;这种形式的赋值的;
因为当编译环境不同时可能会出现不可预料的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询