Компилятор Microsoft C предупреждает, когда вы пытаетесь сравнить две переменные, одна из которых подписана, а другая - без знака. Например:
int a;
unsigned b;
if ( a < b ) { // warning C4018: '<' : signed/unsigned mismatch
}
Было ли это предупреждение в мировой истории когда-либо улавливать настоящую ошибку? Во всяком случае, почему это там?