Java a=0;为什么(&&x2B;&&x2B;a&&x2B;&&x2B;&&x2B;a*&&x2B;a)=7?
输出为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之前增加的
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
Java表达式不像C表达式那样复杂,因为Java没有指针操作操作符,但仍然有足够的操作符使优先级有时混淆。当涉及副作用时尤其如此,如本例。当有疑问时,或者当您认为下一个阅读代码的人可能有疑问时,您可能希望从表达式中提取增量并单独执行它。您认为它应该是什么以及为什么?因此您认为
1+2*3
不是7
?因此,它首先执行增量?是的,这是一个合理的问题,但如果你是编程新手,我还想指出,你应该不惜一切代价避免使用这种构造(同一表达式中同一变量上的多个预增量)(即使你更有经验)。这只会让每个人都感到困惑(在其他语言中,这种行为不一定相同)。(…续…)你认为它应该是什么,为什么?那么你认为1+2*3
不是7
?那么,它首先做增量?是的,因为它是增量前的。这是一个合理的问题,但是如果你是编程新手,我还想指出,你应该避免使用这种构造(对同一表达式中的同一变量进行多次预增量)不惜一切代价(即使您更有经验)。这只会使代码让每个人都感到困惑(这种行为在其他语言中不一定相同)。(…续…)谢谢。所以它先做增量?我以为它先做乘法。@ThoyibAntarnusa是的,它先做增量。我在回答中提供了运算符优先级的链接。您可以查看更多信息。:)谢谢。那么它首先做增量?我以为它先做乘法。@ThoyibAntarnusa是的,它先做增量。我在回答中提供了运算符优先级的链接。有关更多信息,您可以查看此信息。:)