JIS規格では以下のように書かれています。
6.5.15 条件演算子
意味規則 第 1 オペランドを評価し,その評価の直後を副作用完了点とする。第 1 オペランドが 0 と比較して等しくない場合だけ,第 2 オペランドを評価する。第 1 オペランドが 0 と比較して等しい場合だけ,第 3 オペランドを評価する。第 2 又は第 3 オペランド(いずれか評価したほう)の値を結果とする。
つまり、こういうことが可能だということです。
int a;
int *b;
...
// a が 0 ならば 10 / a を評価しないので0除算エラーにならない
x = (a != 0) ? 10 / a : 1;
// b が NULL ならば *b を評価しないのでヌルポインタアクセスにならない
y = (b != NULL) ? *b : 1;
ちなみに、短絡評価とはこういうことをいいます。
// is_a() の値が真ならば is_b() を評価しない
x = is_a() || is_b();
// is_a() の値が偽ならば is_b() を評価しない
y = is_a() && is_b();
「3項演算子 短絡評価」でググってもトップに出てこないので書いたのですが、よく考えたら条件演算子は論理演算ではないので短絡評価とはいいません。しかし、同じキーワードで検索する人のためにこういうタイトルにしておきます。
同じ内容を書いた記事は山ほどあるので…。