Is there an example of this in practice?
Yes, but I don't remember one of the top of my head. Usually some kind of pointer tagging is involved when this happens.
Affter all, NULL==(void*)0;
Yes, but the type conversion is allowed to change the bitpattern, just like
1==(int)1.0
does not guarantee that the bit pattern for floating 1.0 is the same as for integer 1 (hint: it isn't).