質問: ### 質問 競プロで他の方の解答を見ているとたまに`int main()`ではなく`signed main()`と書く人を見かけます。 これがどういう意味か、なぜこのようなことをするのかが分かりません。わかる方ご回答よろしくお願いします。
回答: そんなことを書く人は新人プログラマーのA君に違いありません! 私も調べて初めて知ったテクニックなのですが、こんな話のようです。(参考文献) 1. いつもの10^9+7の剰余だから32bitで収まると思ったら、掛け算あるから32bitじゃオーバーフローしちまう。 2. げ、今のコード、全部`int`だわ、書き直すのきっつ、どうしよう。 3. そうだ、`#define int long long`って書けば全部64bitになるじゃないか!俺、天才! 4. 何?`main`の戻り値が`int`じゃないって?このコンパイラは融通きかねーなー。 5. そうだ、`int`って`signed int`とか`signed`とかもかけるよな?それでなんとかならねーか? 6. `signed main()`って書いたらコンパイラ通るじゃねーか、よし、これで行こう!俺、やっぱ、天才! かくして ``` #define int long long signed main() {} ``` という、謎テクニックが生まれたようです。よい子は横着せずに`#define ll long long`とか使いましょうね。