Its possible only with int.If a function is declared as void that it may return anything by default.
Yes it can be done. returning int is a common occurrence. char can also be returned because internally it is represented as nothing but int. returning float is also possible because there is an implicit conversions from int to float and vice versa. so if an int can be returned. so can be a float.
But of course you would not normally want to do that in any serious programs. The return value of "main" becomes the exit-code for the program and usually the operating systems use an integer (mostly unsigned integer) to capture the exit-code of any program. So unless you don't care about what exit-code you really want to set, it is not a good practice to use anything other than int as the return type of main.