Най-голямата разлика е нивото на предупреждение, при което се генерират тези диагностични съобщения. C4018 е предупреждение от ниво 3. Попада в категорията "неща, които не трябва да пренебрегвате". Просто опитайте кода, който имате с uc = 1 и c = -1 и помислете как е възможно 1 да е по-малко от -1. Почти нито един програмист не очаква такъв резултат. Това го прави генератор на грешки и заслужава видима диагностика.
C4389 е предупреждение от ниво 4. Попада в категорията "изглежда грешно, но вероятно работи все пак". Знакът на операндите не влияе на сравнението на равенството.
Нивото на предупреждение по подразбиране е 3, освен ако не сте променили настройката на проекта. Това ви кара да виждате диагностиката „не трябва да се игнорира“, а не „вероятно все пак работи“.