How to code "if (a and b) or (c and d)"

9 visualizaciones (últimos 30 días)
CA
CA el 5 de Dic. de 2016
Comentada: CA el 5 de Dic. de 2016
I'm writing a code where I need a conditional statement something like the following:
x = 1;
y = 2;
if (((x || y == 1) && (x || y == 3))) || (((x || y == 2) && (x || y == 3))
fprintf('true');
else
fprintf('false');
end;
I tried this, but it keeps outputting "true", when I want it to output "false". I want it to say "If (x or y is 1) and (x or y is 3), or if (x or y is 2) and (x or y is 3), then...". But that clearly isn't what this is saying. Please help!

Respuesta aceptada

Stephen23
Stephen23 el 5 de Dic. de 2016
Editada: Stephen23 el 5 de Dic. de 2016
This does not do what you want (because you are not comparing x with anything, so MATLAB treats the x as true if it is non-zero):
if (((x || y == 1) && ...
You have to compare x first, then perform the or operation:
if (((x==1 || y==1) && ...
You can try this yourself:
>> (3 || 2==4) % 3 is non-zero, treated as true, therefore output is true
ans = 1
>> (3==4 || 2==4) % test if 3==4 and 2==4
ans = 0
  1 comentario
CA
CA el 5 de Dic. de 2016
Yeah, I realized this about 10 minutes after I posted the question, but didn't know how to find my question again to correct my mistake. Thanks though!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by