【发布时间】:2011-02-23 22:52:46
【问题描述】:
正如我在标题中提到的,
a += b 和 a =+ b 以及 a++ 和 ++a 有什么区别?我有点困惑
【问题讨论】:
-
在真正的旧版本 C 中,
=+等同于+=。出于显而易见的原因而放弃。
标签: java
正如我在标题中提到的,
a += b 和 a =+ b 以及 a++ 和 ++a 有什么区别?我有点困惑
【问题讨论】:
=+ 等同于 +=。出于显而易见的原因而放弃。
标签: java
a += b 等价于a = a + b
a = +b 等价于a = b
a++ 和 ++a 都将 a 增加 1。
不同之处在于a++ 返回的是a 在增量之前的值,而++a 返回的是增量之后的值。
即:
a = 10;
b = ++a; //a = 11, b = 11
a = 10;
b = a++; //a = 11, b = 10
【讨论】:
a += b 等同于a = a + b”:一个小书呆子:如果a 的评估涉及副作用,那么这些只会发生一次。例如,在foo().x += y 中,foo 方法仅被调用一次,而在foo().x = foo().x + y 中,它被调用两次(甚至每次都可能返回不同的实例,在这种情况下,x 被分配给不同于正在读取的x)。
a += b 等价于a = a + b
a = +b 等价于a = b
a++ 是后缀增量,++a 是前缀增量。它们在独立语句中使用时没有区别,但它们的评估结果不同:a++ 返回 a before 递增的值,而 ++a after。即
int a = 1;
int b = a++; // result: b == 1, a == 2
int c = ++a; // result: c == 3, a == 3
【讨论】:
其他人已经涵盖了您大部分问题的答案。但是,他们对您的第二个示例有所遗漏。
a = +b 将+b 的值分配给a。 “一元加号”对于数字类型是无操作的,但在其他类型的对象上是编译时错误(例如,您不能将它与字符串一起使用)。它主要是为了让您可以在需要时使用前导 + 符号编写数字。这从来都不是必需的,但在某些情况下它可以提高可读性。
【讨论】:
a+=b ========> a=a+b
a=+b ========> a=b
++a 将增加变量并返回增加的值。
a++ 将增加变量,但返回增加之前的值。
【讨论】:
a += b; // a = a + b
a = +b; // a = b
a++; // a = a + 1 (returning a if used inside some expression)
++a; // a = a + 1 (returning a + 1 if used inside some expression)
【讨论】:
a += b <=> a = a + b
a =+ b <=> a = b
a++ // post increment, means the value gets used, and after that, a is incremented by one
++a //pre increment, a is incremented by one before the value is used
【讨论】:
a++ 首先读取 a 的值,然后增加它的值。 ++a 首先增加值,然后读取它。您可以很容易地看到打印它们的区别。
int a = 4;
System.out.println(a++); // prints 4, after printing, a == 5
System.out.println(++a); // first increments a, then reads its value (6), and that's what got printed.
对于a += b 和a = +b,@Péter Török 之前已经回答清楚了。
【讨论】:
a += b; 等价于a = a + b;。
a =+ b; 等价于a = +b;。这意味着+b(正)被分配给变量a。
a++ 是变量a 的后递增,这意味着变量的值在递增1 之前使用。
++a是变量a的pre-increment,意味着变量的值增加了1,并在增加后使用。
【讨论】:
你可以找到区别here你提到的所有案例都有例子!
【讨论】: