开发者

Diffrence between x++ and ++x? [duplicate]

开发者 https://www.devze.com 2023-02-05 08:15 出处:网络
This question alread开发者_运维知识库y has answers here: Closed 12 years ago. Possible Duplicate:
This question alread开发者_运维知识库y has answers here: Closed 12 years ago.

Possible Duplicate:

Is there a difference between x++ and ++x in java?

I am reading the official Java tutorial and I don't get the difference between postfix and prefix (++x vs x++). Could someone explain?


++x: increment x; the value of the overall expression is the value after the increment

x++: increment x; the value of the overall expression is the value before the increment

Consider these two sections:

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

I personally try to avoid using them as expressions within a larger statement - I prefer standalone code, like this:

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

Here I believe everyone would be able to work out what's printed and the final values of x and y without scratching their heads too much.

There are definitely times when it's useful to have pre/post-increment available within an expression, but think of readability first.


++x increments x and then returns the value x++ returns the value of x and then increments the variable

For example:

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


Well, you get enough answers, I'm going just to worry you... Both post- and pre-increment operators can confuse code, so sometimes it is better to use just x+1 then you and other people definitely know what is going on there. Some examples:

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!

two last incrementing can be a source of problems to debug then (was watching that few times in my life...). x = x++ - it is evaluated before incrementing... So be careful!


++x is pre-incrementing and x++ is post-incrementing. With post-incrementing the value is increased after evaluation and with pre-incrementing the value is increased before evaluation.


Well, standing alone it's the same. but, if there are other operands involved - ++x will advance x and then apply the other operands, and x++ will first use x and then advance it.


Basically, ++x adds 1 to x before x is evaluated, while x++ adds 1 afterwards. It makes sense if you use it as an argument.

Let's start with x

int x = 3;

If we call System.out.println on x using the infix operator:

System.out.println(++x);

x will first increase to 4 and the println will output, "4". It is pretty much the same if we did:

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

Let's imagine x equals 3 again. If we call System.out.println on x using the postfix operator:

System.out.println(x++);

It will first output the current value of x, "3", and then increase x. So it's like:

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

Hope that helps.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号