黑马程序员技术交流社区

标题: 疑问:这程序是怎么运算的阿 晕了 求解答 [打印本页]

作者: Freedom    时间: 2012-8-4 14:14
标题: 疑问:这程序是怎么运算的阿 晕了 求解答
public static void main(String[] args) {
int a = 1;
System.out.println( a+=2+ a++ + ++a );

作者: 林康春    时间: 2012-8-4 14:17
本帖最后由 林康春 于 2012-8-4 14:19 编辑

a+=2+ a++ + ++a
  a =(a+2)+(a++)+(++a)这时候a 的值是1
   a=3+(a++)+(++a) 这时候a 的值是1
  a =4+(++a) 这时候a 的值是2
  a=4+3 这时候a的值是3
a=7

你这个问题都是基础的知识,注意运算顺序
发个运算 优先级的图给你
[size=111%]l


图片1.png (63.31 KB, 下载次数: 25)

图片1.png

作者: 黑马李文    时间: 2012-8-4 14:26
本帖最后由 黑马李文 于 2012-8-4 14:30 编辑

就是左边加右边在赋值给左边~     其中a+=2+ a++ + ++a    可以写成这样给你看看 a =(a+2)+(a++)+(++a)  运行结果为7  还有就是这么一小段程序你错误很多~~应该这样写~
  1. class demo1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int a = 1;
  6.                 System.out.println(a+=2+(a++)+(++a));
  7.         }
  8.         
  9. }
复制代码

作者: 黑马振鹏    时间: 2012-8-4 14:27
System.out.println( a+=(2+ (a++) + (++a) ));
作者: 尤洋    时间: 2012-8-4 16:00
本帖最后由 尤洋 于 2012-8-4 16:02 编辑

给你讲细致一点,点开看大图。

作者: 宫明星    时间: 2012-8-4 18:31
a+=2+ a++ + ++a
+号移到右边就是a+=a+2+(a++)+(++a)
a=1,a+2=3,a++是后置运算,先参加运算,再自增。
++a是前置运算,先自增,再参加运算。
所以a++此时是1,++a此时是2
a=a+2+(a++)+(++a)
=3+(a++)+(++a)
=4+(++a) 这时候a++生效,a此时是2了,++a这时候就是3
=4+3
=7

public static void main(String[] args)
{
         int a = 1;
         System.out.println(a+=2+(a++)+(++a));
}
结果是7

写的有点乱,汗




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