早速ですが、1から100まで1行ごと出力するプログラムを書いてください。40バイトもあれば書けるよね。
・・・え?と思った人、その感覚は(普通のプログラマーとしては)正しいです。ところがCゴルファーからしてみると「40バイトもいらないでしょ」となります。
とりあえず普通のコードを書いてみましょう。
・・・え?と思った人、その感覚は(普通のプログラマーとしては)正しいです。ところがCゴルファーからしてみると「40バイトもいらないでしょ」となります。
とりあえず普通のコードを書いてみましょう。
#include<stdio.h> int main(void){ int i; for(i=1;i<=100;i++){ printf("%d\n",i); } return 0; }はい、正しいコードです。でも長いですよね。ちょっと縮めてみましょう。
main(i){for(;printf("%d\n",i++)<4;);}これで37バイトです。いきなり縮んで意味不明だと思うので細かく説明していきます。
グローバル変数と引数はintを書かなくてもコンパイラがint型だと判断してくれます。
anarchy golfの環境ではmain関数の第一引数は1になっているのでここを使ってしまえば初期化が必要なくなります。
グローバル変数は0で初期化されるのでこちらを使ってもいいのですが、main関数の引数にした方がセミコロンひとつ分短くなります。
anarchy golfの環境ではmain関数の第一引数は1になっているのでここを使ってしまえば初期化が必要なくなります。
グローバル変数は0で初期化されるのでこちらを使ってもいいのですが、main関数の引数にした方がセミコロンひとつ分短くなります。
前置インクリメントは式の評価の前に、後置インクリメントは式の評価の後にインクリメントされます。(例外はあります。)
引数でインクリメントしてもコンパイラに怒られたりはしません。会社の上司には怒られます。
引数でインクリメントしてもコンパイラに怒られたりはしません。会社の上司には怒られます。
コメントをかく