Hi, Can anyone please tell me why line 9 gives an error but line 10 doesn't. Isn't C1+=1 the same as C1=C1+1? The explaination for the answer is: "We can apply ++ operator on char values it will do increament on its ascii value i.e. it will make A to B.We can also apply += operator as it also do implicit casting.But the statement "c1=c1+1" is not valid as we required casting to store an int value into a variable of type char". But I don't see why... it is that on line 9 the number 1 is converted to a character and on line 10 C1 is converted to an integer? If the number 1 on line 9 is an interger, is it possible to implicitly convert it to a character, so that it can be stored in C1 which is defined as a char?
8 c1+=1; 9 c1=c1+1; Because of Assignment implicit conversion. The += uses implicit coversion. c1+=1 is equivalant to c1 = (char) (c1+1) So no problem. But when you use + operator both the operands will be converted to int. so c1+1 gives an int result which can not be coverted into char. That is why the error is.
Thanks,<br />Thiru<br />[SCJP,SCWCD,SCBCD]
Joined: Apr 18, 2002
Thanks for your reply. So does it mean that in the case. C1 = (char)(C1+1), is (C1+1) evaluated to and integer and then cast down to a Character.? If this is the case, when is downcasting permitted and when is it not.?