Rokiのチラ裏

学生による学習のログ

Conditionals with Omitted Operands

GCC の Conditionals with Omitted Operands という拡張構文についてのメモ。x ? x : yというような Conditional operator を利用した記述を次のように記述する事ができる。

x ? : y

値は x が 0 でない限り x 、そうでない場合 y である。このような単純なケースでは上記のように中間のオペランドを省略する事は特別有用ではないが、最初のオペランドが副作用を含む場合、直接二度記述すると当然ながらその副作用が二度発生する。上記のようにオペランドを省略する事で、望ましくない副作用を防止する事ができるとのこと*1。しかし、あくまで GCC による独自拡張の構文であるため、利用には移植性などの観点をふまえること*2