Typically   the   return   value   is   used   as   a   exit   status   code   (I   prefer   to   use   the   exit   ()   function   myself).   So   that,   if   your   program   is   called   by   another   program   or   a   shell/batch   script,   the   calling   entity   can   react   to   the   exit   status   appropriately. 

To   explain   this   a   little   more   clearly,   assume   your   program   parses   a   large   file   and   inserts   the   parsed   data   into   a   database.   Your   program   is   called   by   a   user   clicking   a   button   in   some   other   program.   How   does   the   user   know   if   your   program   successfully   completed   the   task?   Or,   if   it   was   not   completed   successfully,   why?   

The   easiest   way   to   tell   what   happened   after   your   program   has   completed   is   to   check   the   returned   exit   status   code.   Most   of   the   time   these   codes   are   defined   by   you.   For   instance,   0   if   it   completed   okay,   1   if   it   could   not   connect   to   the   database,   2   if   it   deadlocked   with   another   user   in   the   database,   3   if   it   couldn 't   find   the   file   to   parse,   etc.   Then,   using   these   codes,   the   calling   program   can   print   the   appropriate   message   to   the   user 's   screen,   or   use   some   sort   of   logic   that   will   attempt   to   get   your   program   to   complete   successfully.