【问题标题】:i++ and ++i in Java [duplicate]Java中的i ++和++ i [重复]
【发布时间】:2020-03-29 09:39:30
【问题描述】:
    int i = 1;
    i = i++;
    int j = i++;
    int k = i + ++i * i++;
    System.out.println("i==" + i);
    System.out.println("j==" + j);
    System.out.println("k==" + k);

为什么k的结果是11?我是java的学习者。请帮助我并解释幕后发生的事情,或者如果可能的话,请给我一些关于在哪里可以找到相关学习资源的指示。

【问题讨论】:

标签: java operators


【解决方案1】:
int i = 1; // i == 1
i = i++; // i is incremented, but the original value of i is assigned back to i, so i == 1
int j = i++; // i == 2
int k = i + ++i * i++; // k = 2 (the original value of i before this statement) + 
                       //     3 (the result of pre-incrementing i) * 
                       //     3 (the result of post-incrementing i is still 3) == 11
System.out.println("i==" + i);
System.out.println("j==" + j);
System.out.println("k==" + k);

请注意,2 + 3 * 3 被评估为 2 + (3 * 3)

【讨论】:

  • 既然++i改变了i的值,为什么k等于2 + 3 * 3,而不是4+ 3 * 3?
  • @AndyLiu + 运算符的操作数从左到右求值。首先评估i,然后评估++i * i++,最后将两者相加。当i 被求值时,它仍然等于2。
猜你喜欢
  • 2013-04-26
  • 2017-10-23
  • 1970-01-01
  • 2019-03-15
  • 2014-08-16
  • 2010-10-11
  • 1970-01-01
  • 2017-08-11
  • 2011-10-15
相关资源
最近更新 更多