if we set float and double type to NaN then they are not equal to anything including themselves. can such a thing happens for
How about
unsigned int a = -1; if (a == (unsigned char) a) { //returns false (...)