对变量的赋值没有效果?

时间:2012-07-24 21:24:13

标签: java compiler-warnings post-increment pre-increment

当我这样做时: count = ++ count; 为什么我会收到警告 - 对变量计数的赋值没有效果? 这意味着计数递增,然后分配给自己或其他东西? 它和++ count一样吗? count = count ++中会发生什么? ?为什么我没有收到警告?

4 个答案:

答案 0 :(得分:14)

count++++count都是count=count+1的缩写。赋值是内置的,因此没有必要再次分配它。 count++(也称为 postfix )和++count(也称为前缀)之间的区别在于++count之前会发生count++该行的其余部分,count=count++将在该行的其余部分后发生。

如果你要拆分 count = count; count = count+1; ,你最终会得到这个:

count=++count

现在你可以看到为什么postfix不会给你一个警告:最后实际上有些东西被改变了。

如果你拆开 count = count+1; count = count; ,你最终会得到这个:

{{1}}

正如您所看到的,第二行代码是无用的,这就是编译器警告您的原因。

答案 1 :(得分:3)

打破声明你基本上是在写:

++count;
count = count;

你可以看到count = count什么都不做,因此警告。

答案 2 :(得分:3)

++运算符是以下count = count + 1的快捷方式。如果我们违反您的第count = ++count行,则会回复count = count+1 = count

答案 3 :(得分:3)

要扩展一点,count ++是postfix。它发生在其他操作之后,所以如果你做了像

这样的事情
int a = 0, b = 0;
a = b++;

a将为0,b将为1.但是,如果您执行了

,则++ count是前缀
int a = 0, b = 0;
a = ++b;

然后a和b都是1.如果你只是

count++;

++count;

然后没关系,但如果你把它与其他东西结合起来,那就