【问题标题】:Diffrence between x++ and ++x? [duplicate]x++ 和 ++x 之间的区别? [复制]
【发布时间】:2011-06-10 17:09:34
【问题描述】:

可能重复:
Is there a difference between x++ and ++x in java?

我正在阅读官方 Java 教程,但我不明白后缀和前缀之间的区别(++x 与 x++)。谁能解释一下?

【问题讨论】:

标签: java


【解决方案1】:

好吧,你得到了足够的答案,我只是让你担心......后增量和前增量运算符都会混淆代码,所以有时最好只使用 x+1 然后你和其他人肯定知道那里发生了什么。一些例子:

int x = 5;
x = ++x; 
System.out.println( x ); // prints 6
x = x++; 
System.out.println( x ); // prints 6!
x = ++x + x++; 
System.out.println( x ); // prints 14!

最后两次递增可能是调试问题的根源(在我的生活中看过几次......)。 x = x++ - 在递增之前对其进行评估...所以要小心!

【讨论】:

  • 这让我想起了大学C++测试题,比如:给定语句x = ++x+++++x++,一开始就知道x = 1,执行该语句后x的值是多少(如果编译,如果不解释原因)。
  • 是的,这是典型的测验。我注意到很多初级开发人员,想要展示他们的语言知识,更喜欢使用不同的“捷径”技巧,只有在他们有经验之后才能更好地写出简单易懂的东西。尤其是当他们不得不使用一些语言(如 Java 和 JavaScript),并看到相同类型的代码由于语言规范而表现不同......
【解决方案2】:

基本上,++x x 被评估之前给 x 加 1,而 x++ 在之后加 1。如果您将其用作参数,这是有道理的。

让我们从 x 开始

int x = 3;

如果我们使用中缀运算符在 x 上调用 System.out.println:

System.out.println(++x);

x 将首先增加到 4,println 将输出“4”。如果我们这样做几乎是一样的:

x+=1;
System.out.println(x);

让我们再次假设 x 等于 3。如果我们使用后缀运算符在 x 上调用 System.out.println:

System.out.println(x++);

它会先输出x的当前值,“3”,然后增加x。就像这样:

System.out.println(x);
x+=1;

希望对您有所帮助。

【讨论】:

    【解决方案3】:

    ++x 是预递增的,x++ 是后递增的。后递增值在评估后增加,而预递增值在评估之前增加。

    【讨论】:

      【解决方案4】:

      好吧,单独站立也是一样的。但是,如果涉及其他操作数 - ++x 将推进 x 然后应用其他操作数,x++ 将先使用 x 然后推进它。

      【讨论】:

        【解决方案5】:

        ++x 递增 x 然后返回值 x++ 返回 x 的值,然后递增变量

        例如:

        int x = 0;
        int A = ++x; // A = 1
        int B = x++; // B = 1
        int C = x;   // C = 2
        

        【讨论】:

          【解决方案6】:

          ++x:递增x;整体表达式的值是之后增量

          x++:递增x;整个表达式的值是 before 增量

          考虑以下两个部分:

          int x = 0;
          System.out.println(x++); // Prints 0
          // x is now 1
          
          int y = 0;
          System.out.println(++y); // Prints 1
          // y is now 1
          

          我个人尽量避免将它们用作较大语句中的表达式 - 我更喜欢独立代码,如下所示:

          int x = 0;
          System.out.println(x); // Prints 0
          x++;
          // x is now 1
          
          
          int y = 0;
          y++;
          System.out.println(y); // Prints 1
          // y is now 1
          

          这里相信大家不用摸不着头脑,就能算出打印出来的内容和xy的最终值了。

          在表达式中使用前/后增量肯定是有用的,但首先要考虑可读性。

          【讨论】:

          • 谢谢(以及所有发帖的其他人),我现在明白了(所以,你太棒了)!
          猜你喜欢
          • 1970-01-01
          • 2013-06-14
          • 1970-01-01
          • 1970-01-01
          • 2012-08-29
          • 2012-10-06
          • 2018-06-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多