不会又是二级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--,再-b。
把结果复制给a。
也就是a=(a-1)-b。
望采纳~
根据优先级,先进行前置--操作,再进行-操作最后到赋值操作,建议背熟课本后面的优先级附录
a-b赋值给a