【问题标题】:The assignment to variable has no effect?赋值给变量没有效果?
【发布时间】:2012-07-23 06:46:25
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    稍微扩展一下,count++ 是后缀。它发生在其他操作之后,所以如果你做了类似的事情

    int a = 0, b = 0;
    a = b++;
    

    a 为 0,b 为 1。但是,如果你这样做了,++count 是前缀

    int a = 0, b = 0;
    a = ++b;
    

    那么 a 和 b 都是 1。如果你这样做

    count++;
    

    ++count;
    

    那没关系,但如果你把它和别的东西结合起来,它会

    【讨论】:

      【解决方案2】:

      ++ 运算符是以下count = count + 1 的快捷方式。如果我们打破您的线路count = ++count,它会响应count = count+1 = count

      【讨论】:

        【解决方案3】:

        分解你基本上是在写的陈述:

        ++count;
        count = count;
        

        如您所见,count=count 什么都不做,因此发出警告。

        【讨论】:

          【解决方案4】:

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

          如果你要拆开count=count++,你会得到这样的结果:

              count = count;
              count = count+1;
          

          现在您可以看到为什么 postfix 不会给您警告:最后实际上正在更改某些内容。

          如果你拆开count=++count,你会得到这样的结果:

              count = count+1;
              count = count;
          

          如您所见,第二行代码没有用,这就是编译器警告您的原因。

          【讨论】:

          • 我说的是缩写,不完全相同。
          • 对 - 当我发表评论时,您的回答更简短(指的是表达式返回的值)。你在这里做了一个很好的解释+1
          • 为什么不通过 count = count++ 示例中的第一行的警告?因为那没有任何作用。
          • 说实话,我不知道。我的回答当时满足了 OP 和我,但回想起来,我不知道为什么前缀会触发警告而后缀不会。对不起。
          猜你喜欢
          • 2022-10-13
          • 2021-12-04
          • 1970-01-01
          • 2020-01-10
          • 1970-01-01
          • 2015-08-22
          • 2020-07-31
          • 2020-06-29
          相关资源
          最近更新 更多