http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=gcc%A4%CE%B3%C8%C4%A5%B5%A1%C7%BD

今日、gcc 拡張で 3項演算子

x ? x : y

の最初の返値を省略して

x ?: y

と書けることを知った。

つまり、ruby で

v = x || y || z

と書くところを、C でも

v = x ?: y ?: z;

こんな感じに書けるわけだ。これはいい。

この書き方だと、x や y が一度しか評価されないので、マクロを書くときに便利だと思う。