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.