zlib 1.2.7 のファイル inffast.c の 320 行目に、私が理解できないステートメントがあります。
strm->avail_out = (unsigned)(out < end ?
257 + (end - out) : 257 - (out - end));
変数endとoutは、出力バッファーへの 2 つのポインターです。このステートメントはend - outwhenend > outとout - endwhenを計算しようとout >= endしますが、なぜそれが必要なのかわかりません。最終結果は同じように思えます。
strm->avail_out = 257 + (end - out);
2 つのポインターの違いには、符号付き整数型ptrdiff_t(C99 6.5.6:9) があり、257型はintです。加算は、これら 2 つの間の上位の型で行われ、三項演算子が何を防いでいる可能性があるのか わかりません。