Originally posted by Sudhakar Krishnamurthy:
Can anyone shed some light on this behavior??
short i =0;
i>>=i; //compiles fine, an int is implicitly converted to a short here
i~=i; //throws a compiler error, explict casting is required here
Why?
TIA
I changed the code slightly as below:
The compiler indicates that it will not compile because of a possible loss of precision. This makes sense because you are trying to put an integer value (32 bits) into a short value (16 bits). Remember that the value of the short variable,i, will be promoted to an integer before applying the unary operator. Thus, an explicit cast is required. This can result in some strange results when attempting this operation.