为了账号安全,请及时绑定邮箱和手机立即绑定

a=3;a++=3;a=4.根据答案解析的运算顺序,本式重新运算加减时,a(4)+b%a(1)-b/a(1)+a*b(12)-a++(3)=13.

a=3;a++=3;a=4.根据答案解析的运算顺序,本式重新运算加减时,a(4)+b%a(1)-b/a(1)+a*b(12)-a++(3)=13.

正在回答

2 回答

题目是:int a = 3; b = 4;计算a+b%a-b/a+a*b-a++该算式的运算结果以及运算后a的值.

我看了下你的想法,发现你在第一处a这里的想法是有问题的.其实你的想法也不算错,在这里应该算是C语言未定义的行为,在windows的VC编译器和Linux的GCC编译器对自增/减在同一个表达式中的处理方式不太一样,你的想法与VC编译器的处理方式差不多,然而本道题的答案倾向于GCC的处理方式.其实这里不用纠结.这里我给出我的理解:按照运算符的优先级可以将a+b%a-b/a+a*b-a++等价地改写为3+1-1+12-3.为什么第一处a会是3而不是4呢,因为四则运算的结合性是从左往右,即先计算a,再计算a++.所以最后计算的结果是12.由于a++改变了a的值,所以a为4.但在之前的a还是初始值.不懂的可以追问我.

0 回复 有任何疑惑可以回复我~
#1

qq_飞行模式_0

a++不是等于4吗?为什么减去的是3,而不是4?还有b%a是怎样计算得到1的?
2015-07-14 回复 有任何疑惑可以回复我~
#2

273310244 回复 qq_飞行模式_0

b%a 是4/3余出来的1.
2015-07-14 回复 有任何疑惑可以回复我~
#3

不要为你的无知找借口 回复 qq_飞行模式_0

a++之后a的值确实是4,因为a原本是3嘛,但是在c语言中表达式也是有值得啊,懂不,表达式也是有值得,这个概念必须清楚才行,++a表达式的值是4,a++表示式的值却是3.要整体看才行。
2015-07-16 回复 有任何疑惑可以回复我~
#4

道凡生 提问者

非常感谢!
2015-07-29 回复 有任何疑惑可以回复我~
查看1条回复

没有高手能回答吗?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

a=3;a++=3;a=4.根据答案解析的运算顺序,本式重新运算加减时,a(4)+b%a(1)-b/a(1)+a*b(12)-a++(3)=13.

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信