【发布时间】:2012-11-23 01:32:02
【问题描述】:
谁能解释一下以下每个小程序的结果? :
public static void main(String[] args) {
int a = 10;
a = a++;
System.out.println(a);
}
结果是:10
为什么不是 11,因为 a 应该在分配后增加?是不是涉及到operator=左右不同的变量?
下一个:
public static void main(String[] args) {
int a = 10;
a = ++a;
System.out.println(a);
}
结果是:11
可以理解,但编译器会显示警告:“对变量 a 的赋值无效”。结果不同意。
更新:
我没有修改我原来的问题,但我添加了这条评论以澄清现在我明白了警告的含义。也就是说,即使没有赋值(通过简单的语句 ++a),结果也是相同的(11)。
【问题讨论】:
-
故事的寓意;不要这样做,因为它可能会造成混淆。
-
这是你的一半答案:What is x after “x = x++”?
-
警告是有道理的,因为您分配了 a 包含的内容(在它增加之后)。这就像 a=a+1 ; a=a ;
-
@PeterLawrey 错了,故事的寓意是:RTFM
-
@Anzeo 我更倾向于观点;如果您发现代码令人困惑,请不要编写它,因为即使 RTFM 会告诉您它的作用,其他人也可能会对此感到困惑。
标签: java increment assignment-operator