How to code "if (a and b) or (c and d)"
    14 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
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!
0 Kommentare
Akzeptierte Antwort
  Stephen23
      
      
 am 5 Dez. 2016
        
      Bearbeitet: Stephen23
      
      
 am 5 Dez. 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
Weitere Antworten (0)
Siehe auch
Kategorien
				Mehr zu Logical finden Sie in Help Center und File Exchange
			
	Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

