这道C语言的题怎么做?
6个回答
展开全部
更多追问追答
追问
好的 非常感谢你
追答
您客气啦
展开全部
这个题目关键是考核学生的观察能力。
其实,把关系运算符的相等符(==)写成赋值符(=)是初学者最容易犯的错误。
在if(a=b+c)这一句中,本意是比简雹较a与b+c是否相等并中,表达式的正确写法是a==b+c,这样,如果二者相等,表达式的值为真,去执行if后面的语绝咐山句,否则,执行else后面的语句。
在这个题目中,如果没有写错双等号,是判断a与b+c是否相等,前面abc分别是2/0/-1,a+b是-1,2≠-1,表达式的值是假。程序去执行else后面的a=b=c=-1。
现在,题目故意写错,它把a=b+c作为if语句的判断表达式,我们看它的值。首先a=b+c是一个赋值语句,它把b+c的值-1赋值给a,即,a=-1,然后判断它的逻辑值,它就用a的值作为逻辑值,而C语言对数字的逻辑值的解释是,除了0为逻辑假,其他非0数字都是逻辑真,所以,a=-1的逻辑值为真。
这就有意思了,程序判断逻辑真,会执行if语句后面的内容。可是后面仍然是一个if语句,而且是:
if()
else if()
else
结构,
先判断a是否>0,因a=-1>0为假,继续判断a是否=0,a=-1≠0仍然为假,最后只能执行else后面的a=b=c=1。
因此,最后打印出A选项的1,1,1。
结论:A选项正确。
其实,把关系运算符的相等符(==)写成赋值符(=)是初学者最容易犯的错误。
在if(a=b+c)这一句中,本意是比简雹较a与b+c是否相等并中,表达式的正确写法是a==b+c,这样,如果二者相等,表达式的值为真,去执行if后面的语绝咐山句,否则,执行else后面的语句。
在这个题目中,如果没有写错双等号,是判断a与b+c是否相等,前面abc分别是2/0/-1,a+b是-1,2≠-1,表达式的值是假。程序去执行else后面的a=b=c=-1。
现在,题目故意写错,它把a=b+c作为if语句的判断表达式,我们看它的值。首先a=b+c是一个赋值语句,它把b+c的值-1赋值给a,即,a=-1,然后判断它的逻辑值,它就用a的值作为逻辑值,而C语言对数字的逻辑值的解释是,除了0为逻辑假,其他非0数字都是逻辑真,所以,a=-1的逻辑值为真。
这就有意思了,程序判断逻辑真,会执行if语句后面的内容。可是后面仍然是一个if语句,而且是:
if()
else if()
else
结构,
先判断a是否>0,因a=-1>0为假,继续判断a是否=0,a=-1≠0仍然为假,最后只能执行else后面的a=b=c=1。
因此,最后打印出A选项的1,1,1。
结论:A选项正确。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个里面等价于y=y+(i++),所以y=3+2=5;(这里桐亩的y是函数里面临时定义的,屏蔽了外面的全局变量)
main函数里面碰轮棚y=y+(i++)=2+2=4;(这里的y是全局变量笑则,注意i仍然是2,因为函数传递的形参没有改变实参)
main函数里面碰轮棚y=y+(i++)=2+2=4;(这里的y是全局变量笑则,注意i仍然是2,因为函数传递的形参没有改变实参)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询