展开全部
题目跟赋值表达式的值以及逗号运算符的特性有关,没有用到运算符优先级的知识(这种题只会在考试的时候出现,平时没有人这么编程的)
首先看 printf 函数到底输出了什么,%d 对应的参数是 z=(x%y,x/y),即输出表达式 z=(x%y,x/y) 的值;
于是接下看 z=(x%y,x/y) 的值是多少,根据C语言标准,赋值表达式的值是等号右边表达式的值,即 (x%y,x/y) 的值;
现在看 (x%y,x/y) 的值是多少,现在可以去掉括号,不会影响运算顺序,对于 x%y,x/y,表达式里面有逗号运算符。对于逗号运算符,标准规定,逗号表达式必须从左往右计算,并且表达式的值是最后一个子表达式的值,即最右边的表达式的值是多少,整个表达式的值就是多少。那么 x%y,x/y 的值等于 x/y 的值,即 10/3,整型数除法舍去余数,结果是3,因此 printf 的输出是 3;
总结:表达式求值的推导如下:%d -> z=(x%y,x/y) -> x%y,x/y -> x/y -> 10/3 -> 3
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询