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;(对变量index的赋值没有任何影响),但实际上它确实对变量有影响。它将其值减1。为什么Eclipse会给出这样的警告消息?
在第一个示例中,变量不受操作的影响(并且Eclipse没有给出任何警告)。我想知道为什么Eclipse没有消息,我不明白为什么这个赋值对变量索引index = index--;没有影响
发布于 2013-01-10 04:44:42
=和--都会更改index的值。对于Java,--保证发生在=之前,因此对于index = index--;,--的返回值是index的旧值,并覆盖index的减量值,而在index = --index;的情况下,--的返回值已经是index的新值,因此赋值无效,index保持递减。
请注意,在C中,语句index = index--;具有未定义的行为,并且允许编译器减少索引、忽略它或编写重新格式化硬盘的代码(尽管后一种情况极不可能)。
发布于 2013-01-10 04:42:20
问题在于评估作业的方式。当您执行index = index--时,首先计算赋值的右侧。含义:
index的返回值index的indexindex的原始值,因为是先返回的)发布于 2013-01-10 04:41:12
index = index--;首先向左侧的索引赋值,然后执行--,结果将被赋值给任何变量(留在内存中)。
例如:
index =10;
index = index--;首先将值10赋给变量index,它变成
`10--;`注意到没有指向上述语句的变量。现在10--结果是9,不在内存中,但是索引变量仍然指向10,这是在step1中分配的。
https://stackoverflow.com/questions/14246036
复制相似问题