正解は エ
16ビット符号付き整数の表現範囲は-32768~+32767です。オーバフローは「正の最大値を超える」または「負の最小値を下回る」場合に発生します。オーバフローが必ず発生しない条件を考えます。x1とx2の符号が異なる場合(一方が正、他方が負)、加算結果は必ずどちらかの絶対値が減少するため、|x1+x2| < max(|x1|, |x2|) ≤ 32767 となり、オーバフローは絶対に発生しません。正の数と負の数を足すと結果は両者の間に収まるためです。選択肢dの「x1とx2の符号が異なる場合」が正解です。
符号付き整数のオーバフロー:同符号の加算(正+正、負+負)でのみ発生。異符号の加算(正+負)では結果の絶対値がどちらかの絶対値以下になるため必ずオーバフローしない。16ビット符号付きの範囲:-32768(-2^15)~+32767(2^15-1)を確認しておく。