To zrób i zobacz, program pisze się minutę
A tak poza tym, to jest problem, bo chyba zależy od kompilatora i FPU.
O ile dobrze pamiętam, to standard ANSI C nie definiuje sposobu wykonywania konwersji z typu zmiennoprzecinkowego na całkowity jeżeli wartość zmiennoprzecinkowa nie mieści się w całkowitej.
Zdaje się, że w ISO C99 są
zalecenia, żeby przypisać zmiennej największą wartość, jaką może przechować.
Jeżeli nie jest sprawdzane przepełnienie, to w wyniku dostaniesz najmniej znaczące bity, czyli (3421 & 0xff)
jeżeli jest kontrola przepełnienia, to dostaniesz 255, czyli maksimum.
A żeby uniknąć kłopotów - nieśmiertelne, cholernie przydatne i niedoceniane makro assert()
Jeżeli zależy Ci konkretnie na wybranych bitach, to rzutuj na int (LONG?), a potem na BYTE.