Java 算术运算 '--' 运算符

标签 java eclipse

我试图了解 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/

相关文章:

java - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) 不工作

Java多线程自增可以为负数吗?

java - 通过 MenuItem 触发方法

eclipse - "PKIK path building failed"尝试使用 WAS 8 插件从 Eclipse 3.6 中的 github 克隆 repo

java - Hibernate 和 MySQL 管道破裂

Java 集合 : How to divide a sorted list into sub lists

java - 如何在不覆盖的情况下保存文本文件?

Android R.java 不会在 Eclipse 中生成

java - Eclipse 问题的新类

eclipse - 如何将eclipse插件开发库源代码附加到项目?