代码顺序在java中执行

时间:2014-01-18 10:12:14

标签: java int operators double

我正在运行以下代码

int x=4;
int y=3;
double z=1.5;
z=++x/y*(x-- +2);
int t=(++x/y);
    System.out.println(z); //7

想知道

时它是如何产生7的
  1. (x-- +2)= 6
  2. ++ X / Y = 1.6666

    3 = 6 * 1.6666 = 10

2 个答案:

答案 0 :(得分:5)

z=++x/y*(x-- +2);

评估为:

z = ++x / y * (x-- + 2);  // Substitute value of ++x, y and x--
  = 5 / 3 * (5 + 2);      // After this point, x will be 4. Evaluate parenthesized expr
  = 5 / 3 * 7   // Now, left-to-right evaluation follows
  = 1 * 7       // 5 / 3 due to integer division will give you 1, and not 1.66

t = ++x / y;   // x is 4 here
  = 5 / 3
  = 1

答案 1 :(得分:1)

代码评估为:

z=((++x)/y)*(x-- +2);

x和y都是int,因此每个步骤的计算结果将被转换为int类型。这意味着5/3=1

最后,结果会分配给一个双变量,因此7会转换为7.0

将代码修改为:

z=1.0 * ((++x)/y)*(x-- +2);

您将获得小数结果。