#include <stdio.h> void main() { int x,y,z; x=y=1;z=x++,y++,++y; printf ("%d%d%d",x,y,z); }

#include<stdio.h>voidmain(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d%d%d",x,y,z);}为什么最... #include <stdio.h>
void main()
{
int x,y,z;
x=y=1;z=x++,y++,++y;
printf ("%d%d%d",x,y,z);
}
为什么最后运行结果为231 我主要想知道为什么z=1谢谢!我是这么想的后面x++,y++,++y是逗号 应该是++y的值 应该是3
展开
 我来答
zrj_bd
2010-09-04 · TA获得超过1870个赞
知道小有建树答主
回答量:647
采纳率:100%
帮助的人:1103万
展开全部
原因就是运算符优先级的问题,就像楼上说的:逗号运算符的级别最低,比等号还低
所以这个语句:z=x++,y++,++y;实际上等于:(z=x++),(y++),(++y);这样写的话相信楼主就知道为什么z=1了吧
楼主认为z应该是3的原因应该是把z=x++,y++,++y;当成z=(x++,y++,++y);了
百度网友d050c1b
2010-09-04 · TA获得超过933个赞
知道小有建树答主
回答量:1083
采纳率:50%
帮助的人:1026万
展开全部
这个是逗号运算符优先级的问题。
你可以试试
z=(x++,y++,++y);
结果就不一样了~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2010-09-04 · TA获得超过631个赞
知道小有建树答主
回答量:352
采纳率:20%
帮助的人:114万
展开全部
你把z=x++;
改成x++;
z=x;
就可以了。。。
z=x++应该是先把x的原始值1赋予z,再让x=2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琼头浪子
2010-09-04 · TA获得超过602个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:217万
展开全部
逗号运算符的级别最低,比等号还低
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
巛悦
2010-09-04
知道答主
回答量:7
采纳率:0%
帮助的人:3.8万
展开全部
x++是先赋值再+1;++x是先+1再赋值。这么说明白否?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式