Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么增量后操作器无法增量';a';在这个代码中?_Java_Add_Post Increment - Fatal编程技术网

Java 为什么增量后操作器无法增量';a';在这个代码中?

Java 为什么增量后操作器无法增量';a';在这个代码中?,java,add,post-increment,Java,Add,Post Increment,下面是表达式的求值方式(大致上,我没有检查JLS的求值顺序,但我认为是从左到右): 因此,这是预期的结果,您只需应用这些运算符的定义。a++意味着“a”在您编写它的地方有旧值,并在之后进行更改++a表示“a”首先改变值,然后计算 a = a++ + ++b; // a is 11, b is 10 a = 11 + ++b; // a is 12 but its previous value 11 was returned by a++, b is 10 a = 11 + 11; // a

下面是表达式的求值方式(大致上,我没有检查JLS的求值顺序,但我认为是从左到右):

因此,这是预期的结果,您只需应用这些运算符的定义。

a++意味着“a”在您编写它的地方有旧值,并在之后进行更改++a表示“a”首先改变值,然后计算

a = a++ + ++b;  // a is 11, b is 10
a = 11 + ++b;  // a is 12 but its previous value 11 was returned by a++, b is 10
a = 11 + 11;  // a is 12, b is 11 and its updated value was returned by ++b
a = 22;  // a is 12, b is 11 and its updated value was returned by ++b

我希望您理解我)我的英语与您的Java=)处于同一水平。

增量后的可能重复:a++->a将在表达式中求值,然后增量前的增量:++a->a将首先递增,然后在表达式中求值在您的示例中:将在表达式中使用a=11,然后在将a指定为12后,b将首先递增,然后将其设置为11,然后将在表达式中使用。所以a+b将是:22,它被分配给a,然后a=22,b将是11,最后打印到控制台您已经编写了变量a是12…那么为什么编译器忽略了a++的值。我知道增量前运算符和增量后运算符之间的区别。但是这个等式对我来说似乎模棱两可。你说它忽略了这个值是什么意思<如果执行此表达式前
a
为11,则code>a++返回11,执行此表达式后
a
将为
12,但仍返回11。我不明白你发现的模棱两可的东西“在它之后a将是12,但它仍然返回11。”好吧,我理解a=12并返回11,但在所有这些之后,值12发生了什么…:|如果在此之后再次读取
a
的值,它将是12。12已存储在
a
中。否!这就是我问题的重点,a的值是22,后面不是12。也许22已经超越了12对吧????
a = a++ + ++b;  // a is 11, b is 10
a = 11 + ++b;  // a is 12 but its previous value 11 was returned by a++, b is 10
a = 11 + 11;  // a is 12, b is 11 and its updated value was returned by ++b
a = 22;  // a is 12, b is 11 and its updated value was returned by ++b
So:
a = 5;
b = 5;
So:
a++ + ++b = (5 (and a + 1 later) + (at first b + 1) 6.