That's a constraint violation (aka syntax error).
Presumably you mean:
Code:
*(unsigned short *)a;
This converts a to a pointer to unsigned short and then dereferences it, giving you the value of the unsigned short int at that address.
This could be useful if a is, say, a pointer to unsigned char/void that is used as a generic pointer to some chunk of memory. You, for one reason or another, know that the pointer actually points to a short (or at the very least you want to treat the value at the address as a short). You can't dereference a directly because it'll either give you a byte (if it's an unsigned char pointer) or it'll be invalid (if it's a void pointer). So you tell the compiler to pretend a is a pointer to an unsigned short, and then dereference it. It's a shorthand for:
Code:
unsigned short *s = (unsigned short *)a; /* cast may or may not be necessary */
*s;