Oltre al consiglio di MItaly, tieni presente che con %f non potrai mai stampare una quantità piccola come l'epsilon macchina con la giusta precisione.

codice:
#include<stdio.h>

float epsilonmacchina();

int main(void)
{
	float a;

	a = epsilonmacchina();

	printf("nel main %e\n", a);

	getchar();
	return 0;
}

float epsilonmacchina()
{
	float epsilon = 1.0F;

	while ((1.F + epsilon) > 1.F) {
		epsilon /= 2.F;
        }

	printf("nella funzione %e\n", epsilon);

	return epsilon;
}
codice:
nella funzione 5.421011e-20
nel main 5.421011e-20