已知a=1,b=2,c=3,则表达式a*b&&(b++,!c)&&(a++,c++)的值是。该表达式运算过后,a=? ,b=? ,c=?

 我来答
microroom
科技发烧友

2019-09-04 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1578万
展开全部
首先得知道&&进行的是短路运算,如果运算符的左边经计算后结果为假,则不会再计算右边。
因a*b=2为真,接着计算(b++,!c),而(b++,!c)是一个逗号表达式,逗号表达式按从左往右计算,整个表达式的结果为最右边那个表达式的结果。所以,(b++,!c)经计算后为(2,0),逗号表达式的值是0,同时b为3,而a*b&&(b++,!c)&&(a++,c++)=2&&0&&(a++,c++)已为假,不会再计算(a++,c++),因此,结果是表达式a*b&&(b++,!c)&&(a++,c++)的值是0,该表达式运算过后,a=1,b=3,c=3。
听不清啊
高粉答主

2019-09-04 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
该表达式运算过后,a=1 ,b=3 ,c=3
因为 1*2的值非0,被认为是“真”
&&后面继续计算:b++,!c
是一个逗号表达式,b变成了3,!c的值为0(因为c原值为非0,即“真”,取反后即为“假”),所以逗号表达式的值为“假”。
整个表达式的值已经确定,为“假”,后面总分不再运算。
所以,a=1 ,b=3 ,c=3
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三天打鱼N
2019-09-04 · TA获得超过1540个赞
知道大有可为答主
回答量:2032
采纳率:74%
帮助的人:590万
展开全部

看结果就知道了 执行了第一个括号之后就返回了 后面的括号没有执行

第一个括号最后一个值是!c c逻辑取反运算 c是3 取反后是0 然后逗号表达式返回最后一个值 返回了0  前面的&&遇到0就直接返回结果了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琴旧可1
2019-09-01 · TA获得超过3620个赞
知道大有可为答主
回答量:4881
采纳率:85%
帮助的人:223万
展开全部
根据运算符的优先级,表达式等价于
(++a) || (-b) && (++c)
在C/C++中 0为false,非0就是true,上面的表达式就等于
true || true && true
所以最终的值就是true,如果按照整数输出,则为1
追问
很明显不是啊。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式