Java a=0;为什么(&&x2B;&&x2B;a&&x2B;&&x2B;&&x2B;a*&&x2B;a)=7?

Java a=0;为什么(&&x2B;&&x2B;a&&x2B;&&x2B;&&x2B;a*&&x2B;a)=7?,java,increment,Java,Increment,输出为7。这里发生了什么? 请给我解释一下。我还是个编程新手。事情就是这样的: public class Latihan { public static void main(String[] args) { int a = 0; System.out.println(++a + ++a * ++a); } } 编辑2 ++a + ++a * ++a 1 + 2 * 3 1 + 6 7 ++a意味着在使用a之前增加的

输出为7。这里发生了什么? 请给我解释一下。我还是个编程新手。

事情就是这样的:

public class Latihan
{
    public static void main(String[] args)
    {
        int a = 0;
        System.out.println(++a + ++a * ++a);
    }
}
编辑2

++a + ++a * ++a
  1 +   2 *   3
  1 + 6
  7
  • ++a
    意味着在使用
    a
    之前增加
    的值,因此之前的增加
  • a++
    表示使用
    a
    的值,然后将其递增,从而
    递增

事情就是这样发生的:

public class Latihan
{
    public static void main(String[] args)
    {
        int a = 0;
        System.out.println(++a + ++a * ++a);
    }
}
编辑2

++a + ++a * ++a
  1 +   2 *   3
  1 + 6
  7
  • ++a
    意味着在使用
    a
    之前增加
    的值,因此之前的增加
  • a++
    表示使用
    a
    的值,然后将其递增,从而
    递增
++a表示“增加a的值,返回新的(增加的)值”。因此,是的,增量发生在您拥有可用值之前

如果那不是你想要的

a++表示“增加a的值,返回上一个(未增加的)值”

对于“--a”和“a--”(减量)运算符也是如此

Java表达式不像C表达式那样复杂,因为Java没有指针操作操作符,但仍然有足够的操作符使优先级有时混淆。当涉及副作用时尤其如此,如本例。当有疑问时,或者当您认为下一个阅读代码的人可能有疑问时,您可能希望从表达式中提取增量并单独执行。

++a表示“增加a的值,返回新的(增量的)值”。因此,是的,增量发生在您拥有可用值之前

如果那不是你想要的

a++表示“增加a的值,返回上一个(未增加的)值”

对于“--a”和“a--”(减量)运算符也是如此


Java表达式不像C表达式那样复杂,因为Java没有指针操作操作符,但仍然有足够的操作符使优先级有时混淆。当涉及副作用时尤其如此,如本例。当有疑问时,或者当您认为下一个阅读代码的人可能有疑问时,您可能希望从表达式中提取增量并单独执行它。

您认为它应该是什么以及为什么?因此您认为
1+2*3
不是
7
?因此,它首先执行增量?是的,这是一个合理的问题,但如果你是编程新手,我还想指出,你应该不惜一切代价避免使用这种构造(同一表达式中同一变量上的多个预增量)(即使你更有经验)。这只会让每个人都感到困惑(在其他语言中,这种行为不一定相同)。(…续…)你认为它应该是什么,为什么?那么你认为
1+2*3
不是
7
?那么,它首先做增量?是的,因为它是增量前的。这是一个合理的问题,但是如果你是编程新手,我还想指出,你应该避免使用这种构造(对同一表达式中的同一变量进行多次预增量)不惜一切代价(即使您更有经验)。这只会使代码让每个人都感到困惑(这种行为在其他语言中不一定相同)。(…续…)谢谢。所以它先做增量?我以为它先做乘法。@ThoyibAntarnusa是的,它先做增量。我在回答中提供了运算符优先级的链接。您可以查看更多信息。:)谢谢。那么它首先做增量?我以为它先做乘法。@ThoyibAntarnusa是的,它先做增量。我在回答中提供了运算符优先级的链接。有关更多信息,您可以查看此信息。:)