lint は、プログラマの意図には反するが、言語構造上は正しい箇所についても報告します。以下に例を示します。
unsigned 変数は常に負ではない値を持ちます。そのため次のテストは常に失敗します。
unsigned x; if (x < 0) ...
unsigned x; if (x > 0) ...
if (x != 0) ...
最初の例は意図したものではない可能性があります。lint は、負の定数または 0 と unsigned 変数との疑わしい比較を知らせます。unsigned 変数を負数のビットパターンと比較するには、その負数を unsigned にキャストします。
if (u == (unsigned) -1) ...
if (u == -1U) ...
lint は、副作用が期待される状況で使用される副作用のない式、すなわちプログラマの意図に反した式を知らせます。代入演算子が予想されるところ、つまり副作用が予想されたところで等価演算子が存在する場合は追加の警告が発行されます。
int fun() { int a, b, x, y; (a = x) && (b == y); }