我试图了解 index = index--;
和 index=--index;
之间的区别 我检查了 index = index- 的输出-;
下面代码块中的赋值(第一个例子):
public static void main(String[] args) {
int index = 10;
for (int i = 0; i < 10; i++) {
index = index--;
System.out.println("Index:" + index);
}//end of for loop
}// end of main method
输出:
Index:10
Index:10
Index:10
Index:10
Index:10
Index:10
Index:10
Index:10
Index:10
Index:10
当我使用 index=--index;
赋值时(第二个例子)
public static void main(String[] args) {
int index = 10;
for (int i = 0; i < 10; i++) {
index = --index;
System.out.println("Index:" + index);
}
}// end of main method
输出:
Index:9
Index:8
Index:7
Index:6
Index:5
Index:4
Index:3
Index:2
Index:1
Index:0
我有两个问题。在第二个例子中,Eclipse 抛出一个警告: assignment index = --index;
(The assignment to variable index has no effect) 但实际上它确实对变量有影响。它将其值减 1。为什么 Eclipse 会给出这样的警告消息?
在第一个示例中,变量不受操作影响(并且 Eclipse 没有发出警告)。我想知道为什么 Eclipse 没有消息,我不明白为什么这个赋值对变量索引没有影响 index = index--;
最佳答案
=
和--
都会改变index
的值。在 Java 的情况下,--
保证发生在 =
之前,所以在 index = index--;
的情况下--
的返回值是 index
的旧值,并且在 index = -- 的情况下覆盖
index
的减量index;--
的返回值已经是 index
的新值,所以赋值无效,index
保持递减.
请注意,在 C 中,语句 index = index--;
具有未定义的行为,并且允许编译器递减索引、忽略它或编写重新格式化硬盘的代码(尽管后一种情况非常严重)不太可能)。
关于Java 算术运算 '--' 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246036/