Простой и безопасный способ написания вашего теста был бы следующим:
TheValueT x = /* ... */;
if (x < 1 && x != 0) {
// do something
}
Возможно, достаточно умный компилятор предупредит об этом в любом случае, но то же самое верно для любой правильной альтернативы, которая можетбыть написано, чтобы охватить все возможные целочисленные типы (включая типы расширений).То, что работает , обходит предупреждение в моей реализации.
Нет альтернативы, требующей арифметических вычислений со значением x
, во всех случаях определенно дает правильный результат - они сталкиваются с проблемами сзначения x
в крайних диапазонах его или других типов.
Предполагается, что TheTypeT
должен иметь тип integer .Если возможны и плавающие типы, то лучше всего просто жить с предупреждением или использовать флаг компилятора, чтобы отключить это конкретное предупреждение во время производственных сборок.