执行流程 int a =2;int b=(a++)+3*a;System.out.println(b);运行结果11 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先执行a++ 执行过后呢a还是3 但是(a++)是2 然后执行3*a 然后相加 (a++)+3*a -> 2+3*a & a=3 程序是这样走的:1.a=2(初始化赋值)2.运算(a++)+3*a3.把运算结果赋给b关键在第二步:原来的a=2,进行(a++)操作时,(a++)的值是2,然后a就变成了3。再后面是3*a也就是3*3。然后根据运算的优先级再进行2+9的加法运算,就得到了11 找些资料看看运算时的优先级顺序,很容易就解决了。在这里,优先级别()>++>*>+明白了优先级,以后就不会遇到同样的问题了 先执行a++,(a++)=2->这是系统第一次引用a的内存地址所以a=2,然后把(a++)=3->这是系统第二次引用a的内存地址但是a++已经赋值给了a原来的内存地址所以a++=3所以3*a=9,关键是前面那个a++不好理解,还有一个是++a ++放前放后是有区别的 ++放前是计算并马上赋值而放后则是计算并不是马上赋值待高手指正 问一个hm.get()和it.next()的返回值问题 谢谢哈 急呀 ssh 开发,报空指针错误!!! struts2_在当前命名空间找不到对应action,回到父命名空间找吗? 帮忙看看这段错哪里了 struts1中跳转页面的问题? FTP高手请进!!! 找工作前提问 配制struts的奇怪问题急! Weblogic建MS SQLServer 2000连接的问题. 关于地址值 EJB3一个简单问题 请教webservice的问题,我的错误在哪里?
程序是这样走的:
1.a=2(初始化赋值)
2.运算(a++)+3*a
3.把运算结果赋给b关键在第二步:原来的a=2,进行(a++)操作时,(a++)的值是2,然后a就变成了3。再后面是3*a也就是3*3。然后根据运算的优先级再进行2+9的加法运算,就得到了11
在这里,优先级别()>++>*>+
明白了优先级,以后就不会遇到同样的问题了
待高手指正