How to code "if (a and b) or (c and d)"
9 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Stephen23
2016-12-5
编辑:Stephen23
2016-12-5
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
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!