aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes += and ++ Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "+= and ++" Watch "+= and ++" New topic
Author

+= and ++

Satish Sangapu
Greenhorn

Joined: Sep 01, 2000
Posts: 10
How come the following work?
byte a=2,b;
b=a+1; // doesn't work - needs a cast
b=a++; // it works, why? - shouldn't it need a cast?
long L=1;
int i=0;
i=i+L; // not okay - needs a cast
i+=L; // okay, why? - shouldn't it need a cast also?

jayanthi
Greenhorn

Joined: Sep 15, 2000
Posts: 11
when +=,++ is used cast is automatic
Barbara Dyer-Bennet
Greenhorn

Joined: Sep 14, 2000
Posts: 10
The statement b = a++ works not because there is an automatic cast, but because a is incremented as a byte and assigned to b, which is also a byte.
In the statement i = i + L the cast is automatic, and it is to a long type. A long won't fit into the int on the left side of the assignment operator, so you have to do an explicit cast to force the issue.
The statement i += L works because of the compound operator; i becomes a long because the largest data type in the expression is a long. I hope this hslps.
[This message has been edited by Barbara Dyer-Bennet (edited September 15, 2000).]
Anonymous
Ranch Hand

Joined: Nov 22, 2008
Posts: 18944
I tried the same with double i.e saying i+=d(where double d=1.0)and when i displayed it on console I'm getting int value and not as double as pointed out...(that the compound statement will be casted to largest data type in the expression) .
Anonymous
Ranch Hand

Joined: Nov 22, 2008
Posts: 18944
hi,
i tried with bytes byte b1=1,int i=1;and when i perform b1+=1;
it is giving explicit casting is required...i could not get to
final conclusion on this..is there any version problem..
softie
Ranch Hand

Joined: Aug 29, 2000
Posts: 41
Hi Satish,
I agree with barbara. it is that when the += operator is used its equivalent to the operator and cast before the right side. whereas its not the case with + operator.

Cheers
Satish
jayanthi
Greenhorn

Joined: Sep 15, 2000
Posts: 11
with +=, ++ cast is automatic
i think so...
jayanthi
Anonymous
Ranch Hand

Joined: Nov 22, 2008
Posts: 18944
OOPs!! I posted it wrongly, b1+=1 is working fine.
Sorry for the mistake..
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: += and ++