関数の作り方について質問したいんですけど
いろんなサイト回ったり本みたりしてるんですが
わからないんで、ちょっとお願いします。
構文的にはこうじゃないですか

戻り値 関数の名前(引数)

ここのところの戻り値ってどうやって決めるんですか?
int,void,charなどなどたくさんありますけど、どんな基準で決めるんですか?
引数のところは大体わかってきたんですけど・・・戻り値が・・

それとたまに関数作って最後の return のところで
return -1; や、以前に定義してあったとして return y;
などありますがどうしてこうなるかがわからなくて・・・
自分的には正常に終了するときの return 0; しかわからないので
なにかとCの初心者なのでお願いします。