黑马程序员技术交流社区

标题: 运算符优先级 [打印本页]

作者: 明羽果果    时间: 2015-2-9 10:05
标题: 运算符优先级
本帖最后由 明羽果果 于 2015-3-4 19:01 编辑

虽然运算符优先级不是重点知识,编程也不建议写很复杂的代码,但是这个还是想知道为什么:time:

QQ图片20150209100313.png (2.77 KB, 下载次数: 71)

QQ图片20150209100313.png

作者: wf111sxwf    时间: 2015-2-9 10:17
先乘除  后加减   int b = a+3*a++  是这样一个过程 2 +  3乘以2 然后 a =a++; 所以结果是8

int c = (a++)+3*a  你上面对a进行了自增 所以 a此时是3  而且你有在c的运算中对a进行了自增
所以 int c = 3+ 3*4  所以结果是15
作者: 明羽果果    时间: 2015-2-9 10:43
:D谢谢,造了
作者: 梁小刀11    时间: 2015-2-10 00:02
和c++的一样把!~
作者: wenyu    时间: 2015-2-10 11:11
基本的加减乘除是固定的,a++是先参与运算再进行自增,而++a是先自增再参与运算。所以b=a+3*a++就可以变成b=2+3*2=8(此时,a已经变成a++=3)。 c = (a++)+3*a=3+3*a(注意这里因为a已经进行过自增,所以这里的a值已经发生变化是4),所以上式应该是 c = (a++)+3*a=3+3*a=3+3*4=15。

这类题弄清x++和++x的区别应该就没问题了
作者: franksight    时间: 2015-2-10 11:30
针对你这个代码,就是按照正常顺序算啊,你的代码根本就没涉及到复杂的运算顺序
作者: yueLife_1993    时间: 2015-2-10 14:15
还好吧   挺简单的  这个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2