Search on the blog

2010年9月11日土曜日

コンマ演算子

世の中には「ショートコーダー」と言われる人達がいる。
コードを短く書くことすべての情熱を注ぐ変態天才たちである。

彼が重宝するテクニックが、「コンマ演算子」
これを使うと、
  1. ループの終了判定が標準入力から入力したものに依存するとき、breakを使わずに簡単に書ける。
  2. ループの括弧を省略することができる。(Pythonみたい。)

という利益を享受できる。
すばらしい。。。

百聞は一見に如かずということでソースコードを。
例によって、PKUの問題から。

私の回答はこんな感じ。

int main() {
int L, M, s, e;
while (scanf("%d %d", &L, &M), L++ && M) {
REP(i, M)
scanf("%d %d", &s, &e),
L -= e-s+1;
printf("%d\n", L);
}
return 0;
}
注目すべきは、「コンマ演算子」。

まず、whileの中について。ここでコンマを使用することにより、複数の処理を判定条件の中に埋め込むことができます。判定条件として判断されるのは、一番最後の部分(この場合は、L++ && M部分)です。

次に、REP()の中ループについて。ループの内容は2行ですが、括弧を使用していません。
これも「コンマ演算子」によってなせる技。。コンマで繋がれた処理は1行の処理とみなされます。
これは、是非ともマスターしたいテクニック!!!
でもやり過ぎは厳禁。業務でこんなの使いまくってたら殺されますね(笑)

0 件のコメント:

コメントを投稿