三項演算子?:の正しい書き方


更新:
2011年2月6日(注意書きを追加)
2002年12月6日(更新履歴を更新)
2002年7月21日書き殴り公開

C・C++・Java・Perl などのプログラミング言語では、条件演算子として三項演算子?:が用意されている。条件演算子の書き方として、以下のような説明がされることが多い。

condition ? true-expression : false-expression

この説明は、以下のプログラムと同じ程度、間違っている。

#include <stdio.h>
  main(  ){printf ("hel"
"lo, world\n"
);}

条件演算子は、正しくは以下のように書く。

condition ? true-expression
          : false-expression

使い方の例を示す。

compare =
  obj1 == null ? obj2 == null ? 0
                              : -1
               : obj2 == null ? 1
                              : obj1.toString().compareTo(obj2.toString());

条件演算子には、以下の表記方法もある。この表記は、 switch文や else-if構文と同様に使える。

case1 ? expression1:
case2 ? expression2:
case3 ? expression3:
     ...
        default-expression

この表記の例を示す。

a = c >= 'A' && c <= 'Z' ? c - 'A':
    c >= 'a' && c <= 'z' ? c - 'a' + 26:
    c >= '0' && c <= '9' ? c - '0' + 52:
    c == '+'             ? 62:
    c == '/'             ? 63:
                           -1;

こんないい加減なページに限って、なぜか大人気なので、念のため注意。このページの内容は、あまり真に受けず、「こんな考え方もある」程度に受け取ってください。



市岡 耕平