title: Difference between signed main() and int main()?
body: <pre><code>#include &lt;bits/stdc++.h&gt;
  using namespace std;
  
  #define int long long
  typedef pair&lt;int,int&gt; pint;
  typedef vector&lt;int&gt; vint;
  typedef vector&lt;pint&gt; vpint;
  
  #define rep(i,n) for(int i = 0; i &lt; (n); i++)
  
  int main()
  {
      vint A(3), B(3);
      rep(i, 3) cin&gt;&gt; A[i];
      rep(i, 3) cin &gt;&gt; B[i];
      int pa = 0, pb = 0;
      rep(i, 3) {
          if(A[i] &gt; B[i]) pa++;
          else if(A[i] &lt; B[i]) pb++;
      }
      cout &lt;&lt; pa &lt;&lt; " " &lt;&lt; pb &lt;&lt; endl;
      return 0;
  }
  </code></pre>
  
  <p>When using <code>int main()</code>, the compiler shows an error message "main must return int", but when I replace it with <code>signed main()</code>, there is no error. What's the reason?</p>