main() {intx,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z);} 请高手详细解答为什么

 我来答
万俟永芬俎水
2020-04-17 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:933万
展开全部
x=y=1; //x=1,y=1
z=x++,y++,++y; //逗号运算符的结合性是从左至右,因此先将x的值赋值给z,z=1,然后x自增
//x的值变为2,然后y++,++y,y自增了2次,所以y的值变为了3.
//因此,最终x=2,y=3,z=1。
独希荣胡环
2020-04-19 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:30%
帮助的人:2380万
展开全部
x=y=1;
x=1;y=1;
z=x++,y++,y++;
z=x++;y++;++y;
z=x;x++;y++;++y;
z=x++,y++,++y;是一个逗号表达式;逗号的运算优先级是最低的,所以先运算z=x++;
而逗号运算式是从左向右算的也就是说z=x++,y++,++y;这个整体表达式其实就是++y当然与本题无关
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北印枝路绸
2020-04-25 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:30%
帮助的人:816万
展开全部
x=y=1;
x=1,y=1
z=x++,
z=2
y++,
y=2
++y;
y=3
所以
x=2,y=3,z=1
x++的意思就是
x=x+1
先用后加
++y的意思也是y=y+1
但是先加后用,
你这里没有区别,如果有循环的话有会看出区别了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仍曼华诗缎
2020-04-20 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:32%
帮助的人:1034万
展开全部
main()
{
int
x,y,z;
x=y=1;
z=x++,//z为1,x为2
y++,//y为2
++y;
//y为3
printf("%d,%d,%d\n",x,y,x);
}
故输出的结果为2,3,2
注:1.z=x++,y++,++y;是一个逗号表达式
2.要理解前自加与后自加的区别
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式