c语言中a=a---b怎么算?
6个回答
展开全部
不会又是二级C的题目吧,不得不说那本书写这种题目可以不要看了。
1)题目的本意是,C的编译遵循一种叫贪心读法,也就是说,对于有歧义的符号,编译器会一直读取,直到他的意思完结。如本题,到底是a-- -b还是a- --b,根据贪心法则,从左到右右,读到第二个减号,意思完结,所以是a-- -b
2)为什么我说着题有问题,因为,即使是a=a-- -b的意思明确了,这个也是一个未定义的行为,也就是说,他的结果是不确定的!a--并不确保返回a的值,到底是先减一再减b还是先完成运算再自减,都是有可能的。如果还有疑问,可自行百度,C 未定义行为。可以说这是一种非常错误的题目。
1)题目的本意是,C的编译遵循一种叫贪心读法,也就是说,对于有歧义的符号,编译器会一直读取,直到他的意思完结。如本题,到底是a-- -b还是a- --b,根据贪心法则,从左到右右,读到第二个减号,意思完结,所以是a-- -b
2)为什么我说着题有问题,因为,即使是a=a-- -b的意思明确了,这个也是一个未定义的行为,也就是说,他的结果是不确定的!a--并不确保返回a的值,到底是先减一再减b还是先完成运算再自减,都是有可能的。如果还有疑问,可自行百度,C 未定义行为。可以说这是一种非常错误的题目。
展开全部
等效于
a=a-b;
a=a-1;
注意:把a---b解释为(a--)-b不是优先级确定的,而是结合性确定的——这就是不能解释为a-(--b)的原因。
a=a-b;
a=a-1;
注意:把a---b解释为(a--)-b不是优先级确定的,而是结合性确定的——这就是不能解释为a-(--b)的原因。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好,很高兴为你解答。
考点:运算符的优先级。
先计算a--,再-b。
把结果复制给a。
也就是a=(a-1)-b。
望采纳~
考点:运算符的优先级。
先计算a--,再-b。
把结果复制给a。
也就是a=(a-1)-b。
望采纳~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-02-23
展开全部
根据优先级,先进行前置--操作,再进行-操作最后到赋值操作,建议背熟课本后面的优先级附录
更多追问追答
追问
那如果a=4,b=2,那最后a的值是2吗?
追答
按这哥们儿说的不应该是1吗。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-02-23
展开全部
a-b赋值给a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询