@Aramil: Firstly, you don't even need to have a prototype. The actual definition determines the type that must be returned, the prototype and definition just have to match.
Second, it doesn't have to return a variable which matches the type of the return type of the function. It can, or it can return a variable that is implicitly convertible to the return type. Details matter ;)
thank i didnt know that. well, i mean i knew about the prototypes but are you saying something like it returns a bool and its meant to return false so it returns 1 (I believe 1 is false but i could be wrong)