zoukankan      html  css  js  c++  java
  • ++a和a++

    1)

     1 public class Test {
     2     static {
     3         int x = 5;            //x是局部变量,不影响后边的值。
     4         System.out.println(x);
     5     }
     6     static int x,y;            //x和y是全局变量,初始化后x=0,y=0。
     7     public static void main(String[] args) {
     8         x--;
     9         System.out.println(x);
    10         myMethod();
    11         System.out.println(x + y++ +x);
    12     }
    13     public static void myMethod(){
    14         y = x++ + ++x;    
    15         System.out.println(x);
    16         System.out.println(y);
    17         //计算顺序:y = x+(++x);x+1
    18     }
    19 }

    输出结果为:

    5
    -1
    1
    0
    2

    分析:a++先执行整个语句,再将a值加1,而++b先将b的值加1,再执行整个语句。

    可以将y = x++ + ++x;中x++看成一条语句,++x看成另一条语句,如下程序所示:

    2)

     1 public class Test {
     2     static {
     3         int x = 5;            //x是局部变量,不影响后边的值。
     4         System.out.println(x);
     5     }
     6     static int x,y;            //x和y是全局变量,初始化后x=0,y=0。
     7     public static void main(String[] args) {
     8         x--;
     9         System.out.println(x);
    10         myMethod();
    11         System.out.println(x + y++ +x);
    12     }
    13     public static void myMethod(){
    14         int a,b;
    15         a = x++;
    16         b = ++x;
    17         System.out.println("a = " + a);        
    18         System.out.println("b = " + b);    
    19         y = a + b;    
    20         System.out.println(x);
    21         System.out.println(y);
    22         //计算顺序:y = x+(++x);x+1
    23     }
    24 }

    输出结果为:

    5
    -1
    a = -1
    b = 1
    1
    0
    2

    另外,调换上天a和b的先后顺序,输出结果是不一样的:

     1 public class Test {
     2     static {
     3         int x = 5;            //x是局部变量,不影响后边的值。
     4         System.out.println(x);
     5     }
     6     static int x,y;            //x和y是全局变量,初始化后x=0,y=0。
     7     public static void main(String[] args) {
     8         x--;
     9         System.out.println(x);
    10         myMethod();
    11         System.out.println(x + y++ +x);
    12     }
    13     public static void myMethod(){
    14         int a,b;
    15         b = ++x;
    16         a = x++;
    17         System.out.println("a = " + a);        
    18         System.out.println("b = " + b);    
    19         y = x++ + ++x;    
    20         System.out.println(x);
    21         System.out.println(y);
    22         //计算顺序:y = x+(++x);x+1
    23     }
    24 }

    输出结果为:

    5
    -1
    a = 0
    b = 0
    3
    4
    10

  • 相关阅读:
    11.变分推断
    10.高斯混合模型GMM
    9.EM 算法
    8.指数族分布
    7.概率图模型(表示/推断/学习)
    6.核方法
    二分查找
    2.3 数据结构---数组(连续)
    C#开发Windows服务的基础代码
    C#与C++之间类型的对应{转}
  • 原文地址:https://www.cnblogs.com/XuGuobao/p/7228211.html
Copyright © 2011-2022 走看看