Retorno da função main

Estudando c/c++ aprendi que colocamos o “return 0” no final da função main para indicar que o programa funcionou corretamente, caso isso ocorra. Mas caso isso não ocorra, um valor diferente de 0 será retornado pela main. O que esse valor indica especificamente? Acredito que não seja um número aleatório.