CAST OPERATION
--------------
* If an expression is preceded by a paranthesized type name, then the
value of the expression is converted to the specified type. This is
called cast operation.
* A cast to void is illegal, except when it is desired to explicitly
discard a value. For example,
int fun ( void );
...
( void ) fun ();
is legal. But, something like this
some = ( void ) some_thing;
is illegal.
* A cast does not yield an lvalue. For example,
char a[] = "vijoeyz";
char *p = a;
* (++ ( (int*) p ) ) = 'E';
is illegal, and has unspecified effect.
* If the value of the expression is represented in greater range or precision
than required by the cast, then value of the expression is converted to
the required type. For example,
(unsigned) (unsigned short) 0xffffffff;
will result in 0xffff. Assume sizeof unsigned and unsigned short to be
32 and 16 bits, respectively.