A query relating a function with 3 input arguments.

My code is:
function i = Three_inputsFunction (x,y,z)
if x>y>z || y>x>z
x+y
elseif x<y<z || x<z<y
y+z
else
x+z
end
end
>> Three_inputsFunction (-18,-3,-6)
ans =
-21
Query : Why is the answer '-21' and not '-9'?

 采纳的回答

"Why is the answer '-21' and not '-9'?"
Because this code
x>y>z
(x>y)>z
which (because true==1 and false==0) is equivalent to either of these
1>z
0>z
You need this instead:
x>y && y>z
Also note that you do not define the function output i.

6 个评论

Fixed it for you too:
Three_inputsFunction (-18,-3,-6)
ans = -9
function Three_inputsFunction(x,y,z)
if x>y && y>z || y>x && x>z
x+y
elseif x<y && y<z || x<z && z<y
y+z
else
x+z
end
end
i see, understood.
but confused with your 2nd elaboration :
1>z
0>z
Would you mind detailing me please. I am new to Matlab.
Thanks for your quick reply though. :)
"Would you mind detailing me please."
This comparison
x>y
can return either
true
or
false
so your code (I added the parentheses for clarity, but these do not change the order of operations):
(x>y)>z
will give either of these two situations:
(true)>z
(false)>z
or using the equivalent numeric values (in MATLAB true==1 and false==0):
(1)>z
(0)>z
from which we can trivially remove the parentheses:
1>z
0>z
So you thought you were performing a comparison of three variables, but in reality you were actually just comparing z against zero or one. The rules of precedence explain why.
@Alek Poudel: you can also show your thanks by accepting my answer :)
ohh yeah, done! didn't know about that before. Cheers!

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Programming 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by