Вот, например :
typedef union __my_float {
unsigned long l ;
unsigned char c[4] ;
float f ;
} my_float ;
my_float f1 ;
// присвоим побайтно "мусор"
f1.c[ 0] = 0 ; // младший байт
f1.c[ 1] = 0 ;
f1.c[ 2] = 0xA0 ;
f1.c[ 3] = 0x7F ; // старший байт
// выведем как float
sprintf( str, "%.0f", f1.f) ;
Ну и будет NAN. Т. е. число 7F A0 00 00 как float не является нормальным значением.