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

10 visualizzazioni (ultimi 30 giorni)
CA
CA il 5 Dic 2016
Commentato: CA il 5 Dic 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!

Risposta accettata

Stephen23
Stephen23 il 5 Dic 2016
Modificato: Stephen23 il 5 Dic 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 Commento
CA
CA il 5 Dic 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!

Accedi per commentare.

Più risposte (0)

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by