if语句无论是否满足条件都会向下执行,直到程序结束;else if 只要满足一个条件就会停止执行。
这就会导致:同一个判断的事件进入多个if语句中循环而出现多次输出的结果,而else if就不会发生这样的事情。 尤其是在多个if…end嵌套的情况下,这种状况尤其严重。而elseif不会发生这样的情况是因为if…elseif…elseif…elseif…end这种情况end是结束if,也就是说elseif是在if里面嵌套的,相当于只有一个if…end语句。
比如说:想要输入0-10的数字,当等于9或10时,对应的等级是A;如果是8,对应的等级是B;如果是7,对应的等级是C;如果是6,对应的等级是D;如果不是以上的那些数输出的等级是E。
新手用if语句去写的话,很容易写成下面的样子,但是当num>10或num<0时,会输出两个结果一个是第一个if里的:this num is not a approporiate value,另一个是最后一个if里的:your grade is E
num=input('please input a number:')
if num > 10 || num < 0
disp('this num is not a approporiate value')
end
if num == 10 || num == 9
disp('your grade is A')
end
if num == 8
disp('your grade is B')
end
if num == 7
disp('your grade is C')
end
if num == 6
disp('your grade is D')
end
if num ~= 10 && num ~= 9 && num ~= 8 && num ~= 7 && num ~= 6
disp('your grade is E')
end
这是由于:if语句无论是否满足条件都会向下执行,直到程序结束
这是由于13和-3既满足
if num > 10 || num < 0
disp('this num is not a approporiate value')
end
也满足:
if num ~= 10 && num ~= 9 && num ~= 8 && num ~= 7 && num ~= 6
disp('your grade is E')
end
所以输出出来的既有:this num is not a approporiate value也有:your grade is E
但是if elseif语句则是,当不满足if中的条件的时候,才会去执行else if
因而上面的问题可以用elseif来解决:
num=input('please input a number:')
if num > 10 || num < 0
disp('this num is not a approporiate value')
elseif num == 10 || num == 9
disp('your grade is A')
elseif num == 8
disp('your grade is B')
elseif num == 7
disp('your grade is C')
elseif num == 6
disp('your grade is D')
else
disp('your grade is E')
end
或者:
num=input('please input a number:')
if num > 10 || num < 0
disp('this num is not a approporiate value')
elseif num == 10 || num == 9
disp('your grade is A')
elseif num == 8
disp('your grade is B')
elseif num == 7
disp('your grade is C')
elseif num == 6
disp('your grade is D')
elseif num ~= 10 && num ~= 9 && num ~= 8 && num ~= 7 && num ~= 6
disp('your grade is E')
end