scusate la mia ingnoranza

in c
quand'č che si usa il void e cosa significa
ho visto scritto:

int main ()
int main (void)
void main()

e poi ho visto scritto %f, %lf cosa cambia?
č giusto questi riferimenti? ne mancano?
%d interi
%c char
%f double

un'ultimo chiarimento
return l'ho visto in varie forme mi sapete dire in quali casi si una uno piuttosto dell'altro

return(0)
return(1)
return
return(varibile)


grazie a tutti