Непонятно я написал код, чтобы проверить, что все значения структуры были установлены равными 0. Для этого я использовал:
bool IsValid() {
return !(0 == year == month == day == hour == minute == second);
}
где все члены структуры имели тип unsigned short. Я использовал код как часть более крупного теста, но заметил, что он возвращал значение false для значений, отличных от нуля, и true для значений, которые были равны нулю - напротив того, что я ожидал.
Я изменил код, чтобы читать:
bool IsValid() {
return (0 != year) || (0 != month) || (0 != day) || (0 != hour) || (0 != minute) || (0 != second);
}
Но хотелось бы знать, что вызвало нечетное поведение. Это результат приоритета? Я попытался ответить на этот ответ Google, но ничего не нашел, если есть какая-либо номенклатура, чтобы описать результат, который я хотел бы узнать.
Я скомпилировал код, используя VS9 и VS8.