I know that in C compilers the main() function is called by the _start() function which has code something like this:
main()
_start()
exit(main());
In C++ it would be a compile error to return anything other than int from main():
int
error: ‘::main’ must return ‘int’
In C it is a warning, you will get a float reinterpreted as an int: for example, 2.1F would be reinterpreted as 224.