2015-10-19 2 views
0

Есть ли причина, по которой это происходит как ложное? Ниже приведен вывод VBA при отладке:Логическое, True & True & True входит как False?

?A + B > X & A + B <= Y & C = 0 
False 

?A + B > X & A + B <= Y 
True 
?C=0 
True 

?A + B > X 
True 
?A + B <= Y 
True 
+2

Вы знаете, что амперсанд (&) является оператором конкатенации, верно? –

+0

, так сказать, «правда, правда и правда», вы не пишете его как «истинное и истинное и истинное»? –

+0

Правильно. Это: «Истина и правда и правда» –

ответ

0

В соответствии с MSDN, арифметика (и &) вычисляются до сравнения и логических операторов.

A + B > X & A + B <= Y & C = 0 оценить как (A + B) > (X & A + B) <= (Y & C) = 0, что, вероятно, не так, как вы ожидали.

1

Проблема, с которой вы столкнулись, заключается в том, что амперсанд & является оператором конкатенации строк в VBA.

Для оценки логических логических условий необходимо использовать оператор And, как так:

?True And True  
+1

«Веселая» часть состоит в том, что 'And' является * логическим * или * бит-мудрым оператором * в зависимости от контекста * .. gotta love VBA :-) –

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