嵌套条件
当我们在另一个条件下使用条件时,我们说条件是嵌套的。 elseif
选项给出了嵌套条件的一个特例,但是还有许多其他方法可以使用嵌套条件。我们来看看以下代码:
a = 2;
if mod(a,2)==0 % MOD - modulo operation, return the remainder after division of 'a' by 2
disp('a is even')
if mod(a,3)==0
disp('3 is a divisor of a')
if mod(a,5)==0
disp('5 is a divisor of a')
end
end
else
disp('a is odd')
end
对于 a=2
,输出将是 a is even
,这是正确的。对于 a=3
,输出将是 a is odd
,这也是正确的,但如果 3 是 a
的除数则错过了检查。这是因为条件是嵌套的,所以只有当第一个是 true
时,才会移动到内部条件,如果 a
是奇数,则甚至都不检查内部条件。这与 elseif
的使用有些相反,其中只有第一个条件是 false
而不是我们检查下一个条件。那么用 5 来检查除法怎么样?只有 6 作为除数(2 和 3)的数字将被检查除以 5,我们可以测试并看到 a=30
的输出是:
a is even
3 is a divisor of a
5 is a divisor of a
我们还应该注意两件事:
end
在每个if
的正确位置的位置对于按预期工作的条件集是至关重要的,因此缩进不仅仅是一个好的推荐。else
语句的位置也是至关重要的,因为我们需要知道在false
中我们想要做什么的if
(以及可能有几个)。
让我们看另一个例子:
for a = 5:10 % the FOR loop execute all the code within it for every a from 5 to 10
ch = num2str(a); % NUM2STR converts the integer a to a character
if mod(a,2)==0
if mod(a,3)==0
disp(['3 is a divisor of ' ch])
elseif mod(a,4)==0
disp(['4 is a divisor of ' ch])
else
disp([ch ' is even'])
end
elseif mod(a,3)==0
disp(['3 is a divisor of ' ch])
else
disp([ch ' is odd'])
end
end
输出将是:
5 is odd
3 is a divisor of 6
7 is odd
4 is a divisor of 8
3 is a divisor of 9
10 is even
我们看到 6 个数字只有 6 行,因为条件嵌套的方式确保每个数字只有一个打印,并且(虽然不能直接从输出中看到)没有进行额外的检查,所以如果一个数字甚至没有必要检查 4 是否是其中一个除数。