求解一道C语言选择结构的题目

9.下列程序段执行后,变量k、x、y、z的值依次为intk,x,y,z;x=y=z=0;k=x++&&y++||++z;答案是1101,可k为什么等于1呢,x不是先判断再... 9. 下列程序段执行后,变量k、x、y、z的值依次为

int k,x,y,z;

x=y=z=0;

k=x++&&y++||++z;
答案是1101,可k为什么等于1呢,x不是先判断再加1吗
展开
 我来答
Goddess_cls
2013-07-10 · 超过20用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:49.5万
展开全部
表达式:
k = ( (x++ && y++) || ++z );
因为++z=1, 所以=号右值为1,k=1,且z=1
x++,所以x=1; 但x++= 0,所以y++未执行。y=0;
追问
x++为何=0??
追答
x++是个表达式  表达式的值=x。 x = x+1。这是后++的规则。
++x表达式的值= x+1。 x = x+1;这是前++的规则。
百度网友0bf2197
2013-07-10 · TA获得超过943个赞
知道小有建树答主
回答量:596
采纳率:50%
帮助的人:102万
展开全部
楼上的不对吧,如果真的按楼上的解释则X=y啊,显然两者不相等。
运算过程如下:
k = (x++&&y++) || (++z)=((x++&&y)++) || (++z)=((1&&0)++)||(++z)=(0++)||(++z)=1||1=1
因此可以解释为什么x、y不相等。因为y并没有进行自增运算,而x进行了自增运算。
追问
可是++的优先级高于&&呀?
追答
我写了下代码,这么分析不对啊。抱歉啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yylrhyyl
2013-07-10 · TA获得超过1878个赞
知道大有可为答主
回答量:2013
采纳率:80%
帮助的人:599万
展开全部
故弄玄虚的做法,老老实实加上括号才是王道。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pifuzhiyong
2013-07-10 · TA获得超过815个赞
知道小有建树答主
回答量:530
采纳率:38%
帮助的人:142万
展开全部
&&优先级比||高,相当于k = (x++&&y++) || (++z) = 0 || 1 = 1
追问
那y为什么等于0呢,&&不是左边为真,右边就要判断吗?y加1了呀
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式