2015-11-11 3 views
-3
if ((pCommandPts>=tempChar.commandValue) && ((pCommandPts - tempChar.commandValue)<=0)) 

Если pCommandPts - это int со значением 6, а tempChar.commandValue - это int со значением 3, почему этот оператор оценивается как false?Если логическая ошибка оператора

+5

Ну, 'pCommandPts - tempChar.commandValue' является 6- 3, который равен 3, который не меньше или равен 0. Общее условие только оценивает значение true, если оба левого и правого операндов оператора '&&' истинны. Почему вы ожидаете, что он будет оценен как истинный? –

+0

Это пахнет домашней работой –

+0

@ Jon Skeet - конечно, не спасибо, что указали на ошибку - должно быть слепой, как летучая мышь. – Enchanter

ответ

2

Левая часть этого выражения справедливо в случае 6 и 3, но 6-3 не ниже или равна нулю

&& ((pCommandPts - tempChar.commandValue)<=0))

2

Этот код не имеет смысла, и это почти наверняка ошибка.

Если переставить неравенства, вы получите:

a >= b && a <= b 

Что только истинно, если a == b, что не верно для случая 6 != 3

Смежные вопросы