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

来源:3-4 练习题

道凡生

2015-06-27 20:19

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

写回答 关注

2回答

  • 不要为你的无知找借口
    2015-06-28 01:25:40
    已采纳

    题目是: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还是初始值.不懂的可以追问我.

    道凡生

    非常感谢!

    2015-07-29 21:14:30

    共 4 条回复 >

  • 道凡生
    2015-06-27 20:27:46

    没有高手能回答吗?

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926209 学习 · 20797 问题

查看课程

相似问题