mainはint main(void)かint main(int argc, char *argv[])と同等のもの、
それ以外は処理系定義(つまりどこでも動くとは限らない)とされている
(5.1.2.2.1 Program startup -1より)

mainの戻り値がintとcompatibleな場合、returnを省略するとreturn 0;と
同等になる。mainの戻り値がintとcompatibleでない場合、戻り値は
明示されていない(unspecified)。
(5.1.2.2.3 Program termination -1より)