C语言,求指点!!

这一题为什么是3,而不是1?是因为/的优先级比%的高吗?... 这一题为什么是3,而不是1?是因为/的优先级比%的高吗? 展开
 我来答
penguinarbiter
2020-11-24 · TA获得超过186个赞
知道小有建树答主
回答量:183
采纳率:100%
帮助的人:42.1万
展开全部

题目跟赋值表达式的值以及逗号运算符的特性有关,没有用到运算符优先级的知识(这种题只会在考试的时候出现,平时没有人这么编程的)

  1. 首先看 printf 函数到底输出了什么,%d 对应的参数是 z=(x%y,x/y),即输出表达式 z=(x%y,x/y) 的值;

  2. 于是接下看 z=(x%y,x/y) 的值是多少,根据C语言标准,赋值表达式的值是等号右边表达式的值,即 (x%y,x/y) 的值;

  3. 现在看 (x%y,x/y) 的值是多少,现在可以去掉括号,不会影响运算顺序,对于 x%y,x/y,表达式里面有逗号运算符。对于逗号运算符,标准规定,逗号表达式必须从左往右计算,并且表达式的值是最后一个子表达式的值,即最右边的表达式的值是多少,整个表达式的值就是多少。那么 x%y,x/y 的值等于 x/y 的值,即 10/3,整型数除法舍去余数,结果是3,因此 printf 的输出是 3;

  4. 总结:表达式求值的推导如下:%d -> z=(x%y,x/y) -> x%y,x/y -> x/y -> 10/3 -> 3

匿名用户
2020-11-24
展开全部
图上的式子是先执行x%y,最后执行的x/y,,所有输出结果是x/y=10/3 = 3.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一变班爱麻啊堡0J
高粉答主

2020-11-24 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:5058万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式