Applying an
explicit pointer typecast to an expression value causes any later
use of the typecast expression value to be associated with the equivalent
group of the typecast expression value.
For example, an int pointer
typecast into a float pointer and
then dereferenced is assumed to potentially access objects in the
float equivalent group—and
not the int equivalent group.
However,
type-incompatible assignments to pointer variables do not alter
the aliasing assumptions on subsequent references of such pointer
variables.
In general, type-incompatible assignments can potentially
invalidate some of the type-safe assumptions. Such constructs may
elicit compiler warning messages.