设x,y,z,s均为int型变量,且初值为1,则执行语句s=++x||++y&&++z后,则x和s的值是?

 我来答
yinconggggg
2018-04-18 · TA获得超过1.5万个赞
知道小有建树答主
回答量:8
采纳率:0%
帮助的人:1827
展开全部

设x,y,z,s均为int型变量,且初值为1,则执行语句:

最后s的值是1。


s=++x||++y&&++z 这一句中,运算符优先级顺序为:++最高,其次是&&,然后是||,最后是

=


该句完全等价于:


++x;

if (x!=0)

s=1;

else

{

++y;

if (y!=0)

{

++z;

if (z!=0)

s=1;

else

s=0;

}

else

s=0;


}

Int:

Int是将一个数值向下取整为最接近的整数的函数。INT是数据库中常用函数中的取整函数,常用来判别一个数能否被另一个数整除

矫茗TF
推荐于2017-09-11 · 超过25用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:67万
展开全部
根据运算符的优先级,"++">"&&">"||“,所以原式可以变为
s=( (++x) || ( (++y) && (++z) ) )
=( 2 || (2&&2) )
=2 || 1
=1
所以s为1,x为2。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine1991
科技发烧友

2014-01-15 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部

由运算符优先级可知,原式等效于

s=(++x||(++y&&++z))

由||运算符的短路效应可知,子表达式++x的值为非零,即为真,所以||右侧的子表达式不会执行,即只有x自增了1,y和z值不变,且子表达式(++x||(++y&&++z))值为真,即1

所以可知x值为2;s值为1;y和z值不变,仍为1

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2014-01-15 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3405万
展开全部
因为x = 1,无论++x是在何时(平台不同,执行的时间点也可能不同)执行,||后面的操作都不会执行,这是所谓的“短路”效应引起的,故可以判断,该语句执行后,x为2,s为1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-15
展开全部
x的值为2
s的值为1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式