La Web del Programador: Comunidad de Programadores
 
    Pregunta:  5184 - A MI PARECER EL VB5 PROF. NO REALIZA BIEN LAS MATEMATICAS?
Autor:  guillermo flook
al menos en el vb que uso 5 edicion profesional
este simple pedazo de codigo no anda bien, todas las variables son INTEGER.

textbox.enabled = a * not(b) * c

entendiando que un resultado de la fórmula igual a CERO se asigna a la propiedad un valor FALSE.

ahora todo numero multiplicado x cero es cero
al menos eso dicen las leyes de la matematicas

bueno
asignando C = 0
siendo las variable a o b de x valor, el resultado de la formula no es siempre CERO
y la propiedad se establece en TRUE aun cuando C = 0
INCREIBLE NO!!!!
para resolver el problema use este truco

textbox.enabled = (a * not(b)) * c
le puse parentesis
y anda
mi pregunta es ¿estoy equivocado?

  Respuesta:  juan Cecconi
EL problema es que lo que tu escribes no es lo que debes poner, pues el operador NOT no es una funcion , por lo cual el poner NOT (x) * y
significa que haga una operacion Not de todos los bits de la expresion que tiene a derecha, es decir, que no esta tomando como unico parametro x pues no es una funcion!!!
la forma es : a * c * Not b
o si quieres utilizar algo parecido a lo que pusiste antes: a * (Not (b)) * c

el valor que devuelve la expresion que tu pusiste no depende de "c" porque el Not se efectua sobre la expresion "(b) * c" (que es siempre 0, si c=0) entonces al hacer el Not devolvera el hexa "FFFF" (todos los bits 1) con lo cual es equivalente al numero "-1" (en complemento a 2, que es como trabaja el procesador) , de esta forma la expresion final es equivalente a lo que tu pones es: Text.Enable = a * (-1)
que obviamente sera true siempre que la cuenta de distinto de cero (false es equivalente a 0)
Esto lo puedes verificar si pones en la ventana de inspeccion tu expresion y luego cambias los valores de a,b y c
Saludos!!!